tdd · diff
git:20260524.88f2faa to git:20261027.3a32e04
24 added, 40 removed. Audit A to A.
---
name: tdd
- description: 用测试驱动开发方式实现或修复功能:先写失败测试,再做最小实现,最后重构。只在用户明确要求 TDD、先写测试、补回归测试或按 Red-Green-Refactor 工作时使用;不要用于单纯解释测试报错或泛泛讨论测试概念。
+ description: 测试先行实现或修 bug、补回归测试,或为已有正确实现补充行为测试时使用。按用户范围区分实现改动与仅补测试;不用于只解释测试概念、解读报错或未要求测试工作的普通讨论。
user-invocable: true
- disable-model-invocation: true
- allowed-tools: "Read, Grep, Glob, Write, Edit, Bash(npm:*, node:*, npx:*, vitest:*, jest:*, pytest:*)"
+ allowed-tools: "Read, Grep, Glob, Write, Edit, Bash(npm *, node *, npx *, vitest *, jest *, pytest *)"
argument-hint: "[file-or-description]"
- compatibility: "Works best in repositories with an existing test runner and established test conventions."
+ compatibility: "Use the repository's existing test runner, layout and coverage requirements."
---
- # TDD (Test-Driven Development) Skill
-
- 按小步快跑的 Red -> Green -> Refactor 循环工作,优先建立可复现的行为保护,再修改实现。
-
- ## 开始前
-
- - 根据 `$ARGUMENTS` 明确目标行为、bug 场景或待实现功能。
- - 先读现有实现、相邻测试和项目约定,优先沿用仓库已有的测试框架、fixture 和命名方式。
- - 如果用户只要求“补测试”而没有要求改实现,就停在测试层,不主动改生产代码。
-
- ## RED
-
- 1. 写能暴露目标行为的最小失败测试。
- 2. 对 bug 修复,先写复现 bug 的回归测试。
- 3. 优先运行最小测试范围,确认它确实失败,并说明失败证明了什么。
+ # Tests with a purpose
- ## GREEN
+ 从当前会话和 `$ARGUMENTS` 确定要保护的外部行为,阅读实现、相邻测试和项目约定。
+ 选择下面与用户要求相符的分支,沿用现有框架、fixture、测试布局和覆盖率要求。
- 1. 只做让新测试通过所需的最小实现改动。
- 2. 先重跑刚刚失败的测试;必要时再补跑相邻测试。
- 3. 不为了“顺手优化”扩大改动面。
+ ## 修 bug 或测试先行实现
- ## REFACTOR
+ 1. 写最小目标断言:bug 用例必须复现用户报告的行为;新功能用例表达尚未实现的行为。
+ 2. 运行相关测试,确认 RED 来自该断言,而不是语法、导入、缺凭据或缺环境。
+ 3. 修改让用例通过所需的最小实现,再运行该用例与受影响的相邻测试。
+ 4. 有具体必要时才重构,并重新验证;不顺手扩大功能范围。
- 1. 在测试保护下整理命名、消除重复、简化实现。
- 2. 任何重构后都重新运行相关测试,确保行为不变。
- 3. 只有在改动面较大或用户明确要求时,才扩大到更完整的测试集。
+ 完成证据是目标失败的实际输出、最小修复和通过结果。不能复现时先修反馈循环,
+ 如实区分环境故障与目标行为,不能声称已经验证修复。
- ## 工作准则
+ ## 仅给已有实现补测试
- - 优先断言对外可观察行为,而不是内部实现细节。
- - 新增测试尽量贴近现有测试文件;只有在必要时才创建新文件。
- - 如果仓库没有测试基础设施,先说明现状,再决定是补最小配置还是只给出建议。
- - 不要把覆盖率数字当成目标;以行为信心和回归保护为准。
+ 当用户要求补边界、增加现有行为保护或明确不改实现时,只修改测试及其必要 fixture。
+ 从公开行为推导有区分度的断言,覆盖正常、边界和相关失败路径。正确实现下,测试
+ 首次运行即可通过;报告它新增保护的行为,不改坏代码、伪造失败或制造 RED。
- ## 汇报方式
+ 如果新测试暴露真实缺陷,保留证据并说明;按用户已有授权处理修复范围,不能把
+ “只补测试”自动扩展成生产代码重构。
- - 使用 `## RED`、`## GREEN`、`## REFACTOR` 三段汇报。
- - 说明修改了哪些测试文件、哪些实现文件,以及运行了哪些测试命令。
- - 最后补充剩余风险、未覆盖场景或后续建议。
+ ## 验证与交付
- ## 使用示例
+ 运行最小有意义的测试范围,按依赖扩大验证。测试可观察结果而非私有实现,避免
+ 照抄实现重算期望值。基础设施缺失时说明具体缺口,不为了补一个用例引入整套配置。
- - `/tdd src/utils/format.ts` - 为 format.ts 编写测试
- - `/tdd add user validation` - 实现用户验证功能 (TDD 方式)
- - `/tdd` - 为当前 git 变更编写测试
+ 简述实际修改、运行的命令、结果和未覆盖范围;只报告真正经历的阶段,不强制
+ RED/GREEN/REFACTOR 三段。测试通过不等于所有未测行为正确。