技能 test-driven-development
📦

test-driven-development

安全

精���测试驱动开发工作流

也可从以下获取: Cycleaddict,davila7,ZhanlinCui,DMJGilbert,DYAI2025,Cygnusfear,CodingCossack,obra

在编写代码之后再编写测试无法证明测试实际上验证了任何内容。此技能强制执行红-绿-重构循环,每个测试必须在实现之前失败,确保测试验证真实行为。

支持: Claude Codex Code(CC)
🥉 74 青铜
1

下载技能 ZIP

2

在 Claude 中上传

前往 设置 → 功能 → 技能 → 上传技能

3

开启并开始使用

测试它

正在使用“test-driven-development”。 实现一个重试失败操作 3 次的函数

预期结果:

  • 步骤 1 (RED):编写测试 'retries failed operations 3 times'
  • 步骤 2:运行测试 - 验证它失败,因为重试逻辑不存在
  • 步骤 3 (GREEN):实现最小的重试循环
  • 步骤 4:运行测试 - 验证它通过
  • 步骤 5 (REFACTOR):如需要,提取重试逻辑

正在使用“test-driven-development”。 Bug:表单接受空电子邮件

预期结果:

  • RED:test('rejects empty email') - 预期错误 'Email required'
  • 验证:测试失败 - 表单当前接受空电子邮件
  • GREEN:添加空电子邮件验证检查
  • 验证:测试通过,无回归
  • 结果:Bug 已修复,测试防止回归

安全审计

安全
v1 • 2/25/2026

This skill contains only markdown documentation explaining test-driven development methodology. All 57 static analyzer findings for external_commands are false positives - the detected backticks are markdown code fences (```) used for syntax highlighting, not Ruby shell execution. The 6 cryptographic algorithm findings and reconnaissance detections are also false positives from pattern matching on documentation text. No executable code, network calls, or filesystem operations exist in this skill.

2
已扫描文件
674
分析行数
0
发现项
1
审计总数
未发现安全问题
审计者: claude

质量评分

38
架构
100
可维护性
87
内容
50
社区
100
安全
91
规范符合性

你能构建什么

新功能开发

在实现新功能时使用 TDD,确保每个函数都有相应的测试,在提交之前证明正确的行为

防止回归的 Bug 修复

首先编写一个重现该错误的失败测试,然后实现修复,确保该错误无法回归

自信地重构

使用现有测试套件验证在代码重组或优化期间行为保持不变

试试这些提示

基本 TDD 循环
我需要实现 [功能]。帮助我先编写一个描述预期行为的失败测试,然后引导我完成红-绿-重构。
使用 TDD 修复 Bug
Bug: [描述 bug]。帮助我编写一个重现此 bug 的测试(应该失败),然后实现最小的修复以使其通过。
测试质量审查
审查我对 [函数] 的测试。它���试的是真实行为还是模拟行为?测试名称清晰吗?它是否只测试一件事?
TDD 反模式检查
我即将 [操作]。检查这是否违反 TDD 原则。我是在测试模拟行为吗?添加仅测试代码?在不理解的情况下进行模拟?

最佳实践

  • 在实现之前始终观察测试失败 - 这证明测试实际上测试了某些内容
  • 编写最少的代码以通过测试 - 没有额外的功能,没有过度设计
  • 如果跳过 TDD 循环,则删除实现代码并从测试开始重新开始

避免

  • 在测试存在之前编写实现代码
  • 测试模拟行为而不是真实代码行为
  • 向生产类添加仅测试方法

常见问题

如果我已经编写了实现代码怎么办?
删除它。时间已经花费了。使用 TDD 从失败的测试开始重新编写。保留未经验证的代码是技术债务。
我可以在实现之后编写测试吗?
不可以。之后编写的测试立即通过,证明不了任何内容。您测试的是您构建的内容,而不是所需的内容。TDD 要求测试先行。
如果代码太简单而无法测试怎么办?
简单的代码也会出错。30 秒的测试可以防止未来的 bug。如果值得发布,就值得测试。
如何处理没有测试的现有代码?
在进行更改之前为现有行为添加测试。首先测试当前行为,然后对新功能使用 TDD。
如果我的测试设置太复杂怎么办?
复杂的测试表明设计复杂。简化接口、提取辅助函数或使用依赖注入。
什么时候可以跳过 TDD?
仅适用于一次性原型、生成的代码或配置文件。对于生产代码,除非您的人工合作伙伴批准例外,否则始终使用 TDD。