关于 test-detect
用于识别当前项目测试框架并运行对应测试的技能,面向需要执行或生成测试的开发者。它依据配置文件和依赖选择命令,也支持针对文件运行测试及生成测试文件。
主要功能
- 01检测项目测试框架
- 02运行全量或指定文件测试
- 03按源文件生成测试
- 04报告测试结果与失败信息
- 05处理多个框架与 Monorepo
适用场景
- 01快速运行项目现有测试
- 02为单个源文件定位并运行测试
- 03为函数、类或组件生成测试
- 04在多框架项目中选择测试命令
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ davila7/ claude-code-templates --skill test-detect安装后在 Claude Code 中输入/test-detect确认已加载。
详细介绍
测试框架检测
自动检测当前项目中的测试框架,并运行相应的测试。
工作流
步骤 1:检测测试框架
按顺序检查以下文件(以第一个匹配项为准):
| 检查项 | 框架 | 运行命令 |
|---|---|---|
存在 vitest.config.* 或 devDeps 中包含 vitest | Vitest | npx vitest run |
存在 jest.config.* 或 devDeps 中包含 jest | Jest | npx jest |
存在 playwright.config.* | Playwright | npx playwright test |
存在 cypress.config.* | Cypress | npx cypress run |
存在 pytest.ini、conftest.py,或包含 [tool.pytest] 的 pyproject.toml | pytest | python -m pytest |
存在 go.mod | Go 测试 | go test ./... |
存在 Cargo.toml | Rust/cargo | cargo test |
存在 mix.exs | ExUnit | mix test |
包含 rspec 的 Gemfile | RSpec | bundle exec rspec |
package.json 包含 scripts.test | npm test | npm test |
继续之前,先报告检测到的框架。
步骤 2:解析参数
检查 $ARGUMENTS 中的模式:
- 无参数或 "all":运行完整测试套件(步骤 3)
- 文件路径(例如
src/auth/login.ts):运行该文件对应的测试(步骤 4) - "generate" + 文件路径(例如
generate src/utils.ts):生成测试(步骤 5)
步骤 3:运行完整测试套件
运行检测到的测试命令。完成后:
- 报告测试总数、通过数、失败数和跳过数
- 如果测试失败,显示前 3 条失败信息及其 file:line 引用
- 建议:「运行
/test-detect <failing-file>调查特定失败」
步骤 4:运行特定文件的测试
给定源文件路径,查找其测试文件:
搜索策略(按顺序尝试):
__tests__/<filename>.test.<ext>(Jest 约定)<filename>.test.<ext>(同目录放置)<filename>.spec.<ext>(替代约定)test/<filename>_test.<ext>(Go/Python 约定)tests/test_<filename>.<ext>(pytest 约定)<filename>_test.go(Go 约定)
使用 Glob 查找匹配项。如果找到,则只运行该测试文件:
| 框架 | 命令 |
|---|---|
| Vitest | npx vitest run <test-file> |
| Jest | npx jest <test-file> |
| Playwright | npx playwright test <test-file> |
| pytest | python -m pytest <test-file> |
| Go | go test -run <TestName> ./<package>/ |
| Cargo | cargo test <test_name> |
如果没有找到测试文件,询问:「未找到此文件的测试。要我生成测试吗?运行 /test-detect generate <file>」
步骤 5:生成测试
读取源文件并分析:
- 识别所有导出的函数、类和组件
- 确定适合该框架的测试模式
- 生成包含以下内容的测试文件:
- 导入语句
- 每个函数或类对应一个
describe块 - 覆盖正常路径、边界情况和错误情况的
it/test块 - 符合框架习惯的断言和模拟
保存到检测到的框架所约定的位置:
- Jest/Vitest:
__tests__/<filename>.test.<ext>或<filename>.test.<ext>(遵循现有约定) - pytest:
tests/test_<filename>.py - Go:
<filename>_test.go(同一目录) - RSpec:
spec/<filename>_spec.rb
显示生成的文件路径,并询问用户是否要运行新测试。
提示
- 如果检测到多个框架(例如,用 Vitest 进行单元测试,用 Playwright 进行端到端测试),请提及两者,并默认使用单元测试框架
- 对于单体仓库,从最接近当前目录的配置文件进行检测
- 如果
package.json同时包含test和test:unit/test:e2e脚本,且上下文明确,则优先使用专用脚本
评论
支持 Markdown