关于 test-driven-development
介绍测试驱动开发流程的技能:先编写失败测试,再实现最少代码,最后重构。帮助开发者将这一流程用于功能、缺陷修复、业务逻辑和 API 契约。
主要功能
- 01Red-Green-Refactor 循环
- 02逐步测试优先工作流
- 03TypeScript 测试驱动示例
- 04测试设计建议
- 05适合采用 TDD 的场景
适用场景
- 01开发需求明确的新功能
- 02先编写失败测试再修复缺陷
- 03测试复杂业务逻辑
- 04开发 API 契约
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ dralgorhythm/ claude-agentic-framework --skill test-driven-development安装后在 Claude Code 中输入/test-driven-development确认已加载。
详细介绍
测试驱动开发
TDD 循环
- 红:编写一个失败的测试
- 绿:编写最少量的代码使测试通过
- 重构:在保持测试通过的同时改进代码
工作流
- 编写测试:编写一个描述预期行为的测试
- 运行测试:确认测试失败(红)
- 实现:编写最少量的代码使测试通过
- 运行测试:确认测试通过(绿)
- 重构:在测试持续通过的情况下清理代码
- 重复:编写下一个测试用例
TDD 示例
步骤 1:红——编写失败的测试
describe("Calculator", () => {
test("adds two numbers", () => {
const calc = new Calculator();
expect(calc.add(2, 3)).toBe(5);
});
});
// Run: FAIL - Calculator is not defined
步骤 2:绿——最少量的实现
class Calculator {
add(a: number, b: number): number {
return a + b;
}
}
// Run: PASS
步骤 3:重构(如有需要)
代码已经很简洁,继续下一个测试。
步骤 4:下一个测试
test("subtracts two numbers", () => {
const calc = new Calculator();
expect(calc.subtract(5, 3)).toBe(2);
});
// Run: FAIL - subtract is not defined
TDD 的优势
- 设计反馈:测试能及早发现设计问题
- 文档:测试记录预期行为
- 信心:有测试作为安全网,可以放心重构
- 专注:一次只处理一种行为
TDD 提示
- 从简单开始:从最简单的测试用例入手
- 一个断言:每个测试应验证一种行为
- 描述性名称:测试名称就是文档
- 测试中不写逻辑:测试应一目了然
- 快速反馈:测试应在几毫秒内运行完成
何时使用 TDD
- 需求明确的新功能
- 修复 Bug(先编写失败的测试)
- 复杂的业务逻辑
- 开发 API 契约
TDD 效用较低的场景
- 探索性代码或原型代码
- UI 布局更改
- 简单的 CRUD 操作
评论
支持 Markdown