测试驱动开发Skill test-driven-development

测试驱动开发(TDD)是一种软件开发方法论,通过先写失败测试、再实现代码、最后重构的循环来确保代码质量和功能正确性。适用于新功能开发、bug修复和代码重构。关键词:测试驱动开发、TDD、软件测试、代码质量、Red-Green-Refactor、单元测试、自动化测试、持续集成。

测试 0 次安装 2 次浏览 更新于 3/25/2026

name: 测试驱动开发 description: 在编写新功能、添加特性、修复bug或重构时应用TDD原则 - 先写失败测试,再实现代码使其通过,然后重构。 allowed-tools:

  • Write
  • Read
  • Edit
  • Bash
  • Grep

测试驱动开发 (TDD)

所有代码更改的Red → Green → Refactor循环。

TDD循环

  1. RED: 写失败测试
  2. GREEN: 写最少的代码使其通过
  3. REFACTOR: 改进代码质量

对每个需求重复

何时应用TDD

始终使用TDD于:

  • 新函数/方法
  • 新特性
  • bug修复(先复现)
  • 重构现有代码
  • API更改

跳过TDD于:

  • UI样式调整
  • 配置更改
  • 文档更新

过程

1. 先写失败测试

# 开始测试
test "计算含税总额" do
  result = Calculator.calculate_total([100, 200])
  assert Money.equal?(result, Money.new(:USD, 324))
end

# 运行测试 - 应该失败
mix test

2. 实现最少的代码

# 仅足够通过
def calculate_total(prices) do
  prices |> Enum.sum() |> Kernel.*(1.08) |> Money.new(:USD)
end

3. 重构

提取常量,改进命名等。

按技术栈的测试模式

后端 (Elixir)

  • 文件: test/path/module_test.exs
  • 模式: apps/api/test/your_app/task/task_test.exs

前端 (TypeScript)

  • 文件: ComponentName.test.tsx
  • 模式: mobile/libraries/atorasu/atoms/Button/Button.test.tsx

关键规则

  • 测试必须先失败(验证测试有效)
  • 每个需求一个测试
  • 测试行为,而非实现
  • 提交前运行完整测试套件
  • 绝不跳过失败测试

常见陷阱

  • 在测试前写实现
  • 测试未实现就通过(假阳性)
  • 测试实现细节而非行为
  • 未运行测试以验证先失败

验证

# 后端
mix test path/to/test.exs

# 前端
yarn test path/to/test.tsx