测试驱动开发
/tdd
使用 TDD Guide 技能为 $ARGUMENTS 驱动测试先行工作流。$ARGUMENTS 的第一个词选择模式(generate、coverage 或 validate),其余部分为目标文件或目录。如果 $ARGUMENTS 为空,请询问模式和目标。
> 关于工具的注意点: tdd-guide 脚本是 Python 库模块,而非 CLI 工具 —— 请通过 import 导入,不要将其作为命令调用。可运行模式如下。
模式
/tdd generate <file-or-dir> — 先写失败的测试
1. 阅读 engineering-team/skills/tdd-guide/SKILL.md 和 engineering-team/skills/tdd-guide/references/tdd-best-practices.md 以了解红-绿-重构纪律和测试用例分类(正常路径、边界情况、错误情况)。
2. 检测项目的测试框架 —— 参考 engineering-team/skills/tdd-guide/references/framework-guide.md 获取 Jest/Vitest/pytest/JUnit 的规范。
3. 在任何实现之前编写测试;运行它们并确认其失败(红)。
4. 实现能通过测试的最少代码(绿),然后在保持测试通过的情况下进行重构。
5. 可选:使用库进行存根脚手架构建:
cd engineering-team/skills/tdd-guide/scripts && python3 -c "
from test_generator import TestGenerator, TestFramework
g = TestGenerator(framework=TestFramework.PYTEST, language='python')
cases = g.generate_from_requirements({'acceptance_criteria': [
{'id': 'AC1', 'description': 'validates email format'},
{'id': 'AC2', 'description': 'rejects duplicate emails'}]})
print(g.generate_test_file('registration', cases))
"/tdd coverage <coverage-report> — 根据阈值分析缺口
1. 首先使用项目的原生运行器生成真实的覆盖率报告(pytest --cov --cov-report=lcov, vitest run --coverage, jest --coverage)。
2. 解析报告并列出优先级缺口:
cd engineering-team/skills/tdd-guide/scripts && python3 -c "
from coverage_analyzer import CoverageAnalyzer
a = CoverageAnalyzer()
a.parse_coverage_report(open('<path-to-lcov-or-json>').read(), 'lcov') # 或 'json' / 'xml'
print(a.calculate_summary())
for gap in a.identify_gaps(threshold=80.0): print(gap)
"(冒烟测试输入文件位于 engineering-team/skills/tdd-guide/assets/sample_coverage_report.lcov。)
3. 针对每个缺口,返回执行 /tdd generate —— 覆盖率缺口应通过测试来填补,而非通过解释。
/tdd validate <test-file> — 审查测试质量
阅读测试文件并对照 engineering-team/skills/tdd-guide/references/tdd-best-practices.md 进行检查:
- [ ] 每个测试至少有一个有意义的断言(无断言测试是不合格的)
- [ ] 覆盖了边界情况和错误路径,而不仅仅是正常路径
- [ ] 测试相互独立(无顺序耦合,无共享可变状态)
- [ ] 测试名称描述行为,而非实现
- [ ] 不测试私有内部实现 —— 仅测试行为
报告失败项并提供具体的重写建议。
CI 集成
如需将覆盖率阈值接入 CI,请参考 engineering-team/skills/tdd-guide/references/ci-integration.md。
仓库资源(已验证路径)
- 技能文档:
engineering-team/skills/tdd-guide/SKILL.md(+HOW_TO_USE.md)
- 最佳实践:
engineering-team/skills/tdd-guide/references/tdd-best-practices.md
- 框架规范:
engineering-
- 框架指南:team/skills/tdd-guide/references/framework-guide.md
- CI 集成:engineering-team/skills/tdd-guide/references/ci-integration.md
- 库模块:engineering-team/skills/tdd-guide/scripts/
(test_generator, coverage_analyzer, tdd_workflow, fixture_generator, metrics_calculator —— 仅限导入)
- 示例输入:engineering-team/skills/tdd-guide/assets/`