mcpField
T
test-driven-development

test-driven-development

github.com/dralgorhythm测试与质量12964 次安装14 周前更新
代码仓库

关于 test-driven-development

介绍测试驱动开发流程的技能:先编写失败测试,再实现最少代码,最后重构。帮助开发者将这一流程用于功能、缺陷修复、业务逻辑和 API 契约。

主要功能

  1. 01Red-Green-Refactor 循环
  2. 02逐步测试优先工作流
  3. 03TypeScript 测试驱动示例
  4. 04测试设计建议
  5. 05适合采用 TDD 的场景

适用场景

  1. 01开发需求明确的新功能
  2. 02先编写失败测试再修复缺陷
  3. 03测试复杂业务逻辑
  4. 04开发 API 契约

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/dralgorhythm/claude-agentic-framework --skill test-driven-development

安装后在 Claude Code 中输入/test-driven-development确认已加载。

详细介绍

测试驱动开发

TDD 循环

  1. 红:编写一个失败的测试
  2. 绿:编写最少量的代码使测试通过
  3. 重构:在保持测试通过的同时改进代码

工作流

  • 编写测试:编写一个描述预期行为的测试
  • 运行测试:确认测试失败(红)
  • 实现:编写最少量的代码使测试通过
  • 运行测试:确认测试通过(绿)
  • 重构:在测试持续通过的情况下清理代码
  • 重复:编写下一个测试用例

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 提示

  1. 从简单开始:从最简单的测试用例入手
  2. 一个断言:每个测试应验证一种行为
  3. 描述性名称:测试名称就是文档
  4. 测试中不写逻辑:测试应一目了然
  5. 快速反馈:测试应在几毫秒内运行完成

何时使用 TDD

  • 需求明确的新功能
  • 修复 Bug(先编写失败的测试)
  • 复杂的业务逻辑
  • 开发 API 契约

TDD 效用较低的场景

  • 探索性代码或原型代码
  • UI 布局更改
  • 简单的 CRUD 操作

评论

支持 Markdown