| name | pdlc-tdd |
| description | TDD 测试先行(按设计文档生成失败的测试用例) |
| argument-hint | <功能ID | 功能描述> |
| allowed-tools | Read, Write, Edit, Glob, Grep, Bash |
| layer | 2 |
| stage | tdd |
| produces | ["<测试代码 · 项目既有布局>","docs/04_testing/unit-tests/**"] |
| requires | ["docs/02_design/"] |
| next_step | pdlc-implement |
| terminal_state | tdd_done |
| recommended_model | sonnet |
| recommended_effort | medium |
TDD 测试先行
根据设计文档,先编写测试用例,再实现代码。严格遵循 TDD 工作流。
PDLC 前置检查(必须执行,不可跳过)
- 从用户输入中提取功能名称关键词
- 在
docs/02_design/ 的子目录(api/、architecture/、database/、ui-ux/)下搜索包含该关键词的设计文档
- 匹配新格式:
F<日期>-<编号>-*<关键词>*-<类型>.md
- 匹配旧格式:
YYYYMMDD-*<关键词>*-<类型>.md
- 同时检查文件内容中是否包含该关键词
- 未找到任何设计文档 → 输出以下信息后立即停止,不继续执行:
⛔ PDLC 守卫:未找到与「<功能名>」相关的设计文档(API/架构/数据库/UI 任一)。
测试用例必须基于已有的设计文档。请先运行:
👉 /pdlc-design <设计目标>
- 找到 → 提取功能ID(如
F20260326-090000),读取设计文档内容,继续执行
工作流程
- 阅读设计文档: 阅读找到的设计文档,全面理解接口/架构/数据模型
- 阅读编码规范: 阅读
docs/00_standards/coding/ 目录了解编码规范(未命中 → 提示 consider /pdlc-standard add coding/<topic>)
- 编写测试计划: 在
docs/04_testing/unit-tests/ 下创建测试计划文档
- 编写测试代码: 写到项目既有的测试布局里,按下面的规则定位;
不要为迎合某种预设结构新造一套平行的测试目录。
-
测试计划自审与自动修复(编写完成后、运行前执行,不可跳过):
- 重新阅读测试计划和测试代码,对照设计文档和 PRD 逐项检查以下质量门禁:
验收标准覆盖度:
场景完备性:
测试质量:
自动修复:
-
确认测试失败: 运行测试确认全部失败(红灯)。运行命令取自 docs/00_standards/test-commands.yml 的 unit(不存在则回退项目约定)。收尾写 last_phase_result.checks = { "red_verified": true }(红灯已由真跑退出码验证,非模型自评)
-
实现代码: 编写最少量的代码使测试通过
-
重构: 在测试通过的前提下优化代码
要求
- 测试用例必须覆盖:正常流程、边界条件、异常场景
- 测试方法命名清晰描述测试场景
- 单元测试覆盖率:覆盖率达标线以项目配置为准:优先取
docs/00_standards/test-commands.yml 的 coverage 命令阈值参数(那才是强制点,退出码即判定),其次 quality-targets.yml;两者都没有时按 >= 80% 兜底。
目标功能: $ARGUMENTS