name: tdd-workflow
description: 测试驱动开发工作流原则。RED-GREEN-REFACTOR 循环。
allowed-tools: 读取、写入、编辑、全局搜索、查找、Bash
TDD 工作流
先写测试,再写代码。
1. TDD 循环
🔴 RED → 写失败测试
↓
🟢 GREEN → 写最少代码以通过
↓
🔵 REFACTOR → 改进代码质量
↓
重复...
2. TDD 的三定律
- 只写生产代码来使失败测试通过
- 只写足够的测试来展示失败
- 只写足够的代码来使测试通过
3. RED 阶段原则
写什么
| 焦点 |
例子 |
| 行为 |
“应该将两个数字相加” |
| 边缘情况 |
“应该处理空输入” |
| 错误状态 |
“应该为无效数据抛出异常” |
RED 阶段规则
- 测试必须先失败
- 测试名称描述预期行为
- 每个测试一个断言(理想情况下)
4. GREEN 阶段原则
最少代码
| 原则 |
含义 |
| YAGNI |
你不会需要它 |
| 最简单的事 |
写最少代码以通过 |
| 不优化 |
只管让它工作 |
GREEN 阶段规则
5. REFACTOR 阶段原则
改进什么
| 领域 |
动作 |
| 重复代码 |
提取公共代码 |
| 命名 |
使意图清晰 |
| 结构 |
改进组织 |
| 复杂性 |
简化逻辑 |
REFACTOR 规则
- 所有测试必须保持通过
- 小步增量更改
- 每次重构后提交
6. AAA 模式
每个测试遵循:
| 步骤 |
目的 |
| 准备 |
设置测试数据 |
| 执行 |
执行被测试代码 |
| 断言 |
验证预期结果 |
7. 何时使用 TDD
| 场景 |
TDD 价值 |
| 新功能 |
高 |
| 错误修复 |
高(先写测试) |
| 复杂逻辑 |
高 |
| 探索性工作 |
低(先探索,再TDD) |
| UI 布局 |
低 |
8. 测试优先级
| 优先级 |
测试类型 |
| 1 |
快乐路径 |
| 2 |
错误案例 |
| 3 |
边缘案例 |
| 4 |
性能 |
9. 反模式
| ❌ 不要做 |
✅ 要做 |
| 跳过 RED 阶段 |
先看测试失败 |
| 测试后写 |
测试前写 |
| 过度设计初始代码 |
保持简单 |
| 多个断言 |
每个测试一个行为 |
| 测试实现 |
测试行为 |
10. AI 增强 TDD
多智能体模式
| 智能体 |
角色 |
| 智能体 A |
写失败测试(RED) |
| 智能体 B |
实现以通过(GREEN) |
| 智能体 C |
优化(REFACTOR) |
记住: 测试就是规格说明。如果你不能写测试,说明你不理解需求。