技能 tdd-workflow
📦
开发者在没有测试的情况下调试代码会浪费大量时间。此技能强制执行RED-GREEN-REFACTOR循环,帮助开发者自信地构建可靠的软件。
支持: Claude Codex Code(CC)
1
下载技能 ZIP
2
在 Claude 中上传
前往 设置 → 功能 → 技能 → 上传技能
3
开启并开始使用
测试它
正在使用“tdd-workflow”。 实现一个验证电子邮件地址的函数
预期结果:
- RED Phase: 创建了测试'should accept valid email format' - 测试失败(尚未实现)
- GREEN Phase: 实现了最少的正则表达式验证 - 测试通过
- REFACTOR Phase: 将验证逻辑提取到单独的函数中,改进了错误消息
正在使用“tdd-workflow”。 修复用户查找中的null指针异常
预期结果:
- RED Phase: 测试重现了null指针异常 - 确认失败
- GREEN Phase: 在访问用户属性之前添加了null检查 - 测试通过
- REFACTOR Phase: 创建了可重用的null安全查找辅助函数,在整个代码库中使用
安全审计
安全v1 • 2/25/2026
All static analysis findings are false positives. The arrow character (→) was misidentified as shell backtick execution. References to 'crypto' and 'reconnaissance' are pattern matching errors on plain text documentation. This is a safe TDD methodology guide. External commands are legitimately used for running test suites.
1
已扫描文件
155
分析行数
1
发现项
1
审计总数
风险因素
⚙️ 外部命令 (1)
审计者: claude
质量评分
38
架构
100
可维护性
87
内容
50
社区
100
安全
91
规范符合性
你能构建什么
新功能开发
通过先编写测试,然后实现最少的代码来通过每个测试,从而构建可靠的功能。
修复bug并提供回归保护
编写一个能够重现该bug的测试,修复它,然后在重构时自信地确保该bug不会再次出现。
团队代码质量改进
使用多智能体TDD模式,让不同的智能体编写测试、实现代码和重构。
试试这些提示
为新函数启动TDD
我想实现一个[描述行为]的函数。首先按照TDD的RED阶段编写一个失败的测试。测试应该清楚地描述预期行为。
完成RED-GREEN-REFACTOR循环
让我们使用TDD实现[功能]。步骤1:编写一个失败的测试。步骤2:编写最少的代码使其通过。步骤3:为了清晰度进行重构。引导我完成每个阶段。
将AAA模式应用于测试
审查这个测试并使用AAA模式(Arrange、Act、Assert)重新构建它。识别需要设置什么数据、执行什么代码、以及验证什么结果。
多智能体TDD会话
为[功能]运行多智能体TDD会话。智能体A编写失败的测试,智能体B实现代码使其通过,智能体C进行重构。在各阶段之间协调交接。
最佳实践
- 在编写实现代码之前始终观察测试失败——这可以验证测试是否有效
- 每个测试写一个断言,以隔离失败并明确意图
- 在每个完整的RED-GREEN-REFACTOR循环后提交,以保持小而可审查的更改
避免
- 在测试失败之前编写代码——这违背了TDD的目的,通常意味着你不理解需求
- 测试实现细节如私有方法名——测试应该验证行为,而不是内部结构
- 每个测试多个断言——使失败变得模糊,违反了单一职责原则
常见问题
如果我的测试第一次没有失败怎么办?
这意味着测试要么没有正确测试行为,要么代码已经存在。检查你的测试逻辑或查看功能是否已经实现。
我可以为简单的更改跳过TDD吗?
简单是主观的。如果你有信心跳过测试,那么这个更改应该也很容易测试。TDD能够捕获你可能错过的边界情况。
如何在TDD中处理数据库或API调用?
使用mock或fake来隔离被测试的单元。测试逻辑,而不是外部依赖。集成测试可以单独验证真实的连接。
如果TDD拖慢了我的开发速度怎么办?
TDD最初感觉较慢,但会减少调试和回归时间。在代码质量和重构信心方面的投资会有回报。
我应该在UI组件上使用TDD吗?
TDD对于纯UI布局的价值较低。将其用于组件逻辑和状态管理。视觉回归工具可以补充TDD进行UI测试。
我如何优先考虑先编写哪些测试?
从开心路径(预期行为)开始,然后是错误情况,最后是边界情况。性能测试在功能完成后最后进行。