tdd — 测试驱动开发
- 触发方式:
/tdd或关键词「TDD」「test-driven」「测试驱动」「red-green-refactor」 - 适用场景: 新功能开发、Bug 修复、需要集成测试的任务
- 不适用场景: 纯探索性编码、一次性脚本、已有完整测试覆盖的简单改动
功能概述
tdd 让 Claude Code 严格遵循测试驱动开发流程:先写失败测试 → 写最少代码通过测试 → 重构优化。确保每行代码都有测试覆盖。
触发条件
以下情况会自动触发 tdd:
- 提到「用 TDD 方式」、「测试驱动开发」
- 提到「red-green-refactor」
- 要求先写测试再写实现
- 使用
/tdd命令
使用示例
示例 1:实现工具函数
/tdd 实现一个 deepClone 函数,支持 Date、RegExp、Map、Set 类型Claude 会先生成测试用例:
javascript
describe('deepClone', () => {
it('should clone primitive values', () => {
expect(deepClone(42)).toBe(42);
expect(deepClone('hello')).toBe('hello');
});
it('should deep clone nested objects', () => {
const obj = { a: { b: { c: 1 } } };
const cloned = deepClone(obj);
expect(cloned).toEqual(obj);
expect(cloned.a).not.toBe(obj.a);
});
it('should clone Date objects', () => {
const date = new Date('2026-01-15');
const cloned = deepClone(date);
expect(cloned.getTime()).toBe(date.getTime());
expect(cloned).not.toBe(date);
});
});然后逐步实现,每步都确保所有测试通过。
示例 2:API 接口开发
/tdd 实现用户注册 API POST /api/register,包含邮箱验证和密码强度校验- 红灯: 先写集成测试 — 正常注册、重复邮箱、弱密码、缺少字段
- 绿灯: 实现路由、验证逻辑、数据库操作
- 重构: 提取验证中间件,优化错误处理
示例 3:Bug 修复
/tdd 修复订单金额计算含税时浮点精度问题先写一个复现 Bug 的测试 → 测试失败 → 修复(如改用 decimal 库)→ 测试通过。
示例 4:重构遗留代码
/tdd 重构 src/utils/price.ts 中的 calculateDiscount 函数,先补测试示例 5:组件开发
/tdd 实现一个 Autocomplete 组件,支持键盘导航和防抖搜索工作流程
- Red(红灯) — 先写测试,运行确认测试失败
- Green(绿灯) — 写最少代码使测试通过
- Refactor(重构) — 在测试保护下优化代码结构
注意事项
- 测试应该测行为而非实现细节
- 重构阶段不要同时加新功能
- 如果某个场景测试难以编写,可能是设计需要调整
- 对已有代码库做 TDD 时,先补特征测试(characterization tests)锁定现有行为
- 不是所有代码都适合 TDD — 探索性原型更适合
/prototype