测试驱动开发

tdd
分类通用
作者Alireza Rezvani
许可MIT
评分4.60/5
使用11.7K

/tdd

使用 TDD Guide 技能为 $ARGUMENTS 驱动测试先行工作流。$ARGUMENTS 的第一个词选择模式(generatecoveragevalidate),其余部分为目标文件或目录。如果 $ARGUMENTS 为空,请询问模式和目标。

> 关于工具的注意点: tdd-guide 脚本是 Python 库模块,而非 CLI 工具 —— 请通过 import 导入,不要将其作为命令调用。可运行模式如下。

模式

/tdd generate <file-or-dir> — 先写失败的测试

1. 阅读 engineering-team/skills/tdd-guide/SKILL.mdengineering-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. 可选:使用库进行存根脚手架构建:

bash
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. 解析报告并列出优先级缺口:

bash
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/`