[ PROMPT_NODE_25560 ]
TDD 工作流
[ SKILL_DOCUMENTATION ]
# TDD 工作流
> 先写测试,后写代码。
---
## 1. TDD 周期
? 红 (RED) → 编写失败的测试
↓
? 绿 (GREEN) → 编写最少代码以通过测试
↓
? 重构 (REFACTOR) → 改进代码质量
↓
重复...
---
## 2. TDD 三大定律
1. 仅在测试失败时编写生产代码
2. 只编写足以证明失败的测试
3. 只编写足以使测试通过的代码
---
## 3. 红 (RED) 阶段原则
### 编写内容
| 重点 | 示例 |
|-------|---------|
| 行为 | "应该相加两个数字" |
| 边界情况 | "应该处理空输入" |
| 错误状态 | "应该为无效数据抛出异常" |
### 红阶段规则
- 测试必须先失败
- 测试名称描述预期行为
- 每个测试一个断言(理想情况下)
## 4. 绿 (GREEN) 阶段原则
### 最少代码
| 原则 | 含义 |
|-----------|---------|
| **YAGNI** | 你不会需要它 (You Aren't Gonna Need It) |
| **最简方案** | 编写通过测试的最少代码 |
| **无需优化** | 只要能跑通即可 |
### 绿阶段规则
- 不要编写不必要的代码
- 暂时不要优化
- 通过测试,仅此而已
## 5. 重构 (REFACTOR) 阶段原则
### 改进内容
| 领域 | 操作 |
|------|--------|
| 重复 | 提取公共代码 |
| 命名 | 使意图清晰 |
| 结构 | 改进组织方式 |
| 复杂度 | 简化逻辑 |
### 重构规则
- 所有测试必须保持通过(绿色)
- 小步增量修改
- 每次重构后提交
## 6. AAA 模式
每个测试遵循:
| 步骤 | 目的 |
|------|---------|
| **Arrange (安排)** | 设置测试数据 |
| **Act (行动)** | 执行被测代码 |
| **Assert (断言)** | 验证预期结果 |
## 7. 何时使用 TDD
| 场景 | TDD 价值 |
|----------|-----------|
| 新功能 | 高 |
| 修复 Bug | 高(先写测试) |
| 复杂逻辑 | 高 |
| 探索性开发 | 低(先做原型,再 TDD) |
| UI 布局 | 低 |
## 8. 测试优先级
| 优先级 | 测试类型 |
|----------|-----------|
| 1 | 正常路径 (Happy path) |
| 2 | 错误情况 |
| 3 | 边界情况 |
| 4 | 性能 |
## 9. 反模式
| ❌ 避免 | ✅ 推荐 |
|----------|-------|
| 跳过红阶段 | 观察测试先失败 |
| 后写测试 | 先写测试 |
| 过度设计 | 保持简单 |
| 多个断言 | 每个测试一个行为 |
| 测试实现细节 | 测试行为 |
## 10. AI 增强型 TDD
### 多智能体模式
| 智能体 | 角色 |
|-------|------|
| 智能体 A | 编写失败测试 (RED) |
| 智能体 B | 实现代码以通过 (GREEN) |
| 智能体 C | 优化代码 (REFACTOR)