📚 测试工具 全难度 📦 community

tdd-workflow

完整 TDD 工作流,含反合理化表。

8.6 /10 ★★★★☆
📅 2026-06-15 · 🕒 5 分钟阅读 · 最后更新 2026-06-15 · 来源: community · 分析测评
#tdd#testing#workflow
📄 相关文章

📊 评分明细

功能完备度
8.6 核心功能齐全
🎯 易用性
8.3 安装即用
🔧 可扩展性
8.4 声明式配置
🔗 生态协同
8.5 可链式调用
🛡️ 稳定性
9.2 CI 集成验证

🎯 适用场景

tddtestingworkflow

tdd-workflow 快速入门

让 AI 写代码时强制先写测试用例,而不是先把功能糊出来再补测试。

这是什么?解决什么问题?

tdd-workflowaffaan-m/everything-claude-code 仓库下的一个 Skill,核心思路是把”测试驱动开发(TDD)“的方法论打包成 AI 可读的指导文档,让 Claude Code、Cursor 等 AI 编程助手在帮你写代码时,默认走”红-绿-重构”流程,而不是”先写实现再补测试”。

传统的 AI 编程有一个常见问题:你让它”写一个用户注册接口”,它会直接吐出 def register(...) 的实现代码,等你提醒”加个测试”它才慢吞吞地补。这种”实现先行”的习惯,容易让 AI 写出看起来能跑、但边界条件没考虑到的代码。

TDD(测试驱动开发)反过来,流程是:

  1. 红(Red):先写一个会失败的测试用例。
  2. 绿(Green):写最少代码让测试通过。
  3. 重构(Refactor):在测试保护下,优化代码结构。

这个 Skill 包含一个非常实用的”反合理化表”(Anti-rationalization Table),列举了程序员(以及 AI)常见的”今天就跳过 TDD 吧”的借口,以及对应的反驳话术,比如”测试太简单了不用写""就一行改动而已”等等。

它适合的场景:团队想把 TDD 文化推到 AI 编程流中、Code Review 时希望 AI 写出的 PR 自带测试、对 AI 写出的代码质量有更高要求。

准备工作

这个 Skill 不需要额外安装二进制,只需要一个支持 Skill 加载的 AI 编程助手,以及你的项目里已经配置好了测试框架(比如 Python 的 pytest、JavaScript 的 Jest、Go 的 testing 包)。

Clone 仓库:

git clone https://github.com/affaan-m/everything-claude-code.git

tdd-workflow 这个 Skill 加载到 AI 助手:

ln -s everything-claude-code/skills/tdd-workflow ~/.claude/skills/tdd-workflow

3 步快速上手

第 1 步:安装 Skill

按上面的命令软链完成后,重启 AI 助手,这个 Skill 就会生效。

第 2 步:验证安装

向 AI 发送测试请求:

“请按 tdd-workflow 的流程,帮我实现一个 add(a, b) 函数,先写测试再写实现。”

如果 AI 输出的第一步是 pytest 测试用例(故意让它失败),第二步才是 def add(a, b): return a + b,第三步还会问你”要不要重构”,说明 Skill 加载成功。

第 3 步:用 Skill 跑第一个任务

假设你的项目是 Python + pytest,先新建一个测试文件 tests/test_calculator.py:

def test_add_two_positive_numbers():
    assert add(2, 3) == 5

def test_add_negative_numbers():
    assert add(-1, -1) == -2

跑一下,会得到 ModuleNotFoundError: No module named 'calculator',这正是”红”的状态。

让 AI 助手按 tdd-workflow 写实现:

# calculator.py
def add(a, b):
    return a + b

再跑 pytest,两条用例都通过,这就是”绿”。

最后让 AI 帮忙看看有没有可以重构的:函数已经足够简单,无需重构。整个过程跑完,你不仅得到了一个 add 函数,还有两条永远会跑的保护性测试。

常见踩坑

  1. 测试一上来就写”能通过的”:TDD 要求测试先写、且必须先失败。如果一开始测试就过了,说明测试本身没意义。
  2. 测试覆盖不到边界条件:很多 AI 写测试只覆盖”正常输入”,不去想空值、负数、None、超长字符串。Skill 里的反合理化表专门有一条叫”happy path 够了”。
  3. 跳过重构环节:TDD 第三步”重构”经常被偷懒跳过,导致代码长期欠下技术债。
  4. 在已经写好的实现上”补 TDD”:这本质上不是 TDD,而是”测试覆盖”。Skill 强调 TDD 必须是测试先行的。
  5. 把单元测试和集成测试混在一起:TDD 关注单元测试,集成测试应该单独跑,否则一个慢测试卡住整个反馈循环。
  6. 不跑测试就提交:哪怕 TDD 流程走完了,没跑通就 push,等于把隐患推给同事。

初级用法

用法 1:为已有函数补 TDD 化。把现有代码贴给 AI,让它”先帮我写测试用例覆盖这个函数的所有分支”,然后根据测试反向重构实现。

用法 2:做新需求时让 AI 全程 TDD。告诉 AI”我需要 X 功能,请按 tdd-workflow 走完整流程”,AI 会自动按 红-绿-重构 三步输出。

用法 3:用反合理化表自我审查。当你想偷懒跳过 TDD 时,把”反合理化表”调出来读一遍,里面列了 20+ 常见借口,几乎每条都能戳中。

高级玩法

玩法 1:测试覆盖率门禁。在 CI 里加 pytest --cov=src --cov-fail-under=80,覆盖率不到 80% 直接拒绝合并。这个 Skill 建议覆盖率目标 ≥ 80%。

玩法 2:Mutation Testing 验证测试质量。用 mutmut(Python)或 Stryker(JS)等变异测试工具,故意把代码改坏看测试能不能抓到。比单纯看覆盖率更能反映测试有效性。

玩法 3:和 verification-before-completion 联动。tdd-workflow 关注”开发前”,verification-before-completion(也是 Obra/superpowers 下的 Skill)关注”完成后”,两个 Skill 配合形成闭环。

小技巧

  1. 测试命名要”行为驱动”test_add_two_numberstest_add_01 更清晰,失败时一眼能看出哪个场景挂了。
  2. 一个测试一个断言。初期可以宽容,但复杂的测试要拆成多个,失败时定位更快。
  3. 先写最简实现,再迭代。哪怕 def add(a, b): return 0 也能让测试”通过一半”,这种”故意保留失败”是 TDD 的核心节奏。
  4. 不要 mock 你不拥有的东西。Mock 外部 API(网络、数据库)要谨慎,过度 mock 会让测试变成”自欺欺人”。
  5. 保存 RED 阶段的失败日志。提交 PR 时,把”先红再绿”的 git diff 一起贴出来,Code Reviewer 容易信服。

常见问题 FAQ

Q1: 这个 Skill 跟 tdd-workflow 有什么关系?必须装吗?

A: Skill 是给 AI Agent 用的”技能包”,能告诉 Agent 怎么按特定规范工作。不是必须装——如果你的项目规模小、要求不高,不装也能用。但装上能让 Agent 输出的质量更高、更符合最佳实践,推荐装。

Q2: 这个 Skill 适合哪些 AI Agent?Cursor?Claude Code?其他?

A: tdd-workflow 来自 community,主要面向支持 Skill 机制的 Agent。常见兼容 Agent 包括 Claude Code、Cursor、OpenCode、Windsurf 等。具体兼容性请查 Skill 官方文档。

Q3: 装了这个 Skill 后,会拖慢 Agent 响应吗?

A: 会的——Skill 通常会增加 prompt 长度,导致响应变慢、token 消耗增加。但质量提升明显。建议:1) 只装项目必需的 Skill;2) 用 Skill 启动/加载/卸载机制按需加载;3) 定期清理不用的 Skill。

Q4: 怎么验证 Skill 装对了?

A: 在 Agent 中输入”列出已加载的 Skill”或类似命令。如果 Skill 出现在列表里,说明装对了。然后用 Skill 跑一个相关任务,看输出是否符合 Skill 规范。

Q5: 这个 Skill 有许可证吗?能商用吗?

A: 取决于 tdd-workflow 的许可证。常见许可证包括 MIT(完全自由)、Apache-2.0(自由但有专利条款)、源可用(可看不能用)、GPL(强开源)。商用前请查仓库 LICENSE 文件。

参考链接


本文基于官方文档和公开资料整理,AI辅助生成,MagicNetWorld 尚未完成独立实测。如有错误或过时信息,请通过 contact@magicnetworld.com 反馈。

tdd-workflow Skill 多维度简评

类别:工程方法 来源:affaanm/everything-claude-code 定位:TDD 工作流强化:红→绿→重构循环,测试命名规范。

注意:本文基于官方文档和公开资料整理,未经过 MagicNetWorld 实测。


一、核心定位与价值

TDD(测试驱动开发)是 Anthropic 官方推荐的 Claude Code 工作流之一。tdd-workflow Skill 将 Red-Green-Refactor 循环固化为 Agent 可执行的标准化流程,解决 AI Agent 在编码时”先写实现再补测试”的天然倾向。

核心价值:强制 Agent 遵循红→绿→重构的 TDD 循环,先写失败的测试,再写最小实现使其通过,最后重构优化。


二、核心能力清单

能力说明
Red 阶段先编写测试,确认测试在无实现时失败
Green 阶段编写最小代码使测试通过,不引入未测试的功能
Refactor 阶段在全部测试通过后重构代码,消除重复,提升可读性
测试金字塔引导按单元测试→集成测试→E2E 测试的比例分布
AAA 模式Arrange(准备)→ Act(执行)→ Assert(断言)的测试结构
Given-When-ThenBDD 风格的测试描述格式

三、为什么 AI Agent 需要 TDD Skill

AI Agent 在编码时有三个天然倾向,需要通过 Skill 纠正:

  1. 实现优先:Agent 倾向于先写完整实现,再补测试,这与 TDD 的”测试优先”相反
  2. Happy Path 偏向:Agent 默认只考虑正常流程,忽略边缘情况
  3. 上下文污染:在单一会话中同时写测试和实现时,实现逻辑会”泄露”到测试中

tdd-workflow Skill 通过以下方式解决这些问题:

  • 强制测试先行(无测试 = 无实现)
  • 明确要求包含边界测试(空值、极端值、异常输入)
  • 使用子 Agent 隔离测试编写和实现编写阶段

四、TDD Red-Green-Refactor 循环

🔴 RED     →  先写一个失败的测试
🟢 GREEN   →  写最小代码让测试通过
🔵 REFACTOR →  在测试保护下重构代码

每个循环的核心原则:

  • Red:测试必须在对应用功能不存在时失败(验证测试的有效性)
  • Green:只写刚好通过测试的代码,不引入任何额外功能
  • Refactor:保持测试全绿的前提下,改进代码结构和可读性

五、安装与配置

# npx 安装
npx skills add affaanm/everything-claude-code --skill tdd-workflow

也可以在 CLAUDE.md 中添加 TDD 相关规则:

# CLAUDE.md
skills:
  - tdd-workflow

六、总结

tdd-workflow 将 TDD 从”开发者自律”变为”Agent 强制流程”。对于重视代码质量和测试覆盖率的项目,它是确保 AI 生成代码可靠性的关键工具。

适用人群:重视测试的工程师、需要 AI 辅助编写测试的团队、所有希望提升代码质量的开发者。


参考资料

📦 快速安装

1 Git Clone
git clone https://github.com/affaan-m/everything-claude-code.git
2 开发模式
ln -s everything-claude-code/skills/tdd-workflow ~/.claude/skills/tdd-workflow