test-driven-development

Solid

在实现任何功能或修复 bug 时使用,在编写实现代码之前

AI & Automation 4,380 stars 425 forks Updated 1 weeks ago MIT

Install

View on GitHub

Quality Score: 90/100

Stars 20%
100
Recency 20%
90
Frontmatter 20%
70
Documentation 15%
100
Issue Health 10%
50
License 10%
100
Description 5%
100

Skill Content

# 测试驱动开发(TDD) ## 概述 先写测试。看它失败。写最少的代码让它通过。 **核心原则:** 如果你没有看到测试失败,你就不知道它是否测试了正确的东西。 **违反规则的字面意思就是违反规则的精神。** ## 何时使用 **始终使用:** - 新功能 - Bug 修复 - 重构 - 行为变更 **例外(需询问你的人类伙伴):** - 一次性原型 - 生成的代码 - 配置文件 想着"就这一次跳过 TDD"?停下来。那是在给自己找借口。 ## 铁律 ``` 没有失败的测试,就不写生产代码 ``` 先写了代码再写测试?删掉它。从头来过。 **没有例外:** - 不要保留作为"参考" - 不要在写测试时"改编"它 - 不要看它 - 删除就是删除 从测试出发,重新实现。句号。 ## 红-绿-重构 ```dot digraph tdd_cycle { rankdir=LR; red [label="红灯\n编写失败的测试", shape=box, style=filled, fillcolor="#ffcccc"]; verify_red [label="验证正确失败", shape=diamond]; green [label="绿灯\n最少代码", shape=box, style=filled, fillcolor="#ccffcc"]; verify_green [label="验证通过\n全部绿灯", shape=diamond]; refactor [label="重构\n清理代码", shape=box, style=filled, fillcolor="#ccccff"]; next [label="下一个", shape=ellipse]; red -> verify_red; verify_red -> green [label="是"]; verify_red -> red [label="错误的\n失败"]; green -> verify_green; verify_green -> refactor [label="是"]; verify_green -> green [label="否"]; refactor -> verify_green [label="保持\n绿灯"]; verify_green -> next; next -> red; } ``` ### 红灯 - 编写失败的测试 写一个最小的测试来展示期望行为。 <Good> ```typescript test('retries failed operations 3 times', async () => { let attempts = 0; const operation = () => { attempts++; if (attempts < 3) throw new Error('fail'); return 'success'; }; const result = await retryOperation(operation); expect(result).toBe('success'); expect(attempts).toBe(3); }); ``` 名称清晰,测试真实行为,只测一件事 </Good> <Bad> ```t...

Details

Author
jnMetaCode
Repository
jnMetaCode/superpowers-zh
Created
2 months ago
Last Updated
1 weeks ago
Language
Shell
License
MIT

Similar Skills

Semantically similar based on skill content — not just same category