用途
该技能用于在代码变更后自动验证测试是否通过,或在测试失败时进行诊断与修复。它覆盖从框架识别、运行测试、分析失败到修复并重跑的完整流程。
主要能力
1. 自动检测测试框架
按以下顺序检查测试配置文件并确定运行命令:
| 文件 | 框架 | 运行命令 |
|---|---|---|
| vitest.config.* 或含 test 的 vite.config.* | Vitest | npx vitest run |
| jest.config.* 或 package.json 中的 jest 键 | Jest | npx jest |
| phpunit.xml | PHPUnit | ./vendor/bin/phpunit |
| pest.php 或 composer.json 中的 Pest | Pest | ./vendor/bin/pest |
| pytest.ini / pyproject.toml [tool.pytest] | pytest | pytest |
| 含 _test.go 文件的 go.mod | Go | go test ./... |
| Cargo.toml | Rust | cargo test |
| 含 rspec 的 Gemfile | RSpec | bundle exec rspec |
同时检查 package.json 脚本中的 test、test:run、test:unit、test:integration。若 CLAUDE.md 指定了测试命令,则改用其中的命令。
2. 运行测试
使用后台方式(run_in_background=true)运行检测到的测试命令,并在可用时启用详细输出标志。
3. 分析结果
若全部通过,报告摘要并停止。若失败,对每个失败项:读取失败测试以理解其期望;读取被测试的源码;将失败分类为:
- 测试写错——测试期望与预期行为不符(更新测试)
- 源码有误——代码存在 bug(修复源码)
- 两者均需更新——行为被有意变更(同时更新两者)
- 环境问题——缺少依赖、缓存陈旧、配置错误(修复环境)
4. 修复并重跑
对每个失败项:做最小化修复;重跑该特定失败测试以验证;继续处理下一个失败项。所有单项修复完成后,再整体运行一次完整测试套件以捕获回归。
5. 报告
报告格式包含:框架、命令、结果(X 通过、Y 已修复、Z 剩余);已修复项(测试名与问题/修复说明);仍失败项(诊断与无法自动修复的原因)。
使用方式
该技能以自动化流程方式使用,无需手动传入参数。它会自行检测项目中的测试框架与配置,执行测试并根据结果决定后续动作。当 CLAUDE.md 存在并指定测试命令时,以其中的命令为准。
适用场景
- 代码变更后需要验证测试是否通过
- 测试失败需要定位原因并修复
- 需要按项目实际框架自动选择合适的测试命令
限制与规则
- 未经用户明确同意,不得删除或跳过任何失败测试
- 优先修复源码而非修改测试(测试定义预期行为)
- 若修复需要改动超过约 20 行,需先展示拟修改内容并征得同意后再应用
- 若同一根因导致多个失败,只修复一次根因