mcpField
T
tdd

tdd

github.com/toy-crane测试与质量376 次安装2 天前更新
代码仓库

关于 tdd

面向开发者的 TDD 技能,以公共行为、最小代码变更和仓库证据组织每轮红绿循环。它还规定了如何选择稳定的测试接缝,并避免脆弱或自我验证的测试。

主要功能

  1. 01通过公共接口测试行为
  2. 02每轮先写一个失败测试
  3. 03选择稳定的测试接缝
  4. 04仅在系统边界使用模拟
  5. 05核对决策与术语

适用场景

  1. 01先用失败测试添加行为
  2. 02选择用于验证的公共边界
  3. 03避免测试耦合实现细节

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/toy-crane/skills --skill tdd

安装后在 Claude Code 中输入/tdd确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

agents/
openai.yaml
evals/
evals.json
trigger-evals.json
evals/compare/
record-step.sh
score.mjs
evals/compare/bug/hidden/
criteria.test.js
reference.js
stub.js
evals/compare/bug/hidden/mutants/
oversized-coupon-ignored.js
percent-rounds.js
unclamped.js
unknown-type-accepted.js
evals/compare/bug/workspace/
package.json
evals/compare/bug/workspace/docs/
bug.md
evals/compare/bug/workspace/src/
cart.js
evals/compare/bug/workspace/test/
cart.test.js
evals/compare/feature/hidden/
criteria.test.js
reference.js
stub.js
evals/compare/feature/hidden/mutants/
negative-weight-allowed.js
qty-ignored.js
remote-skipped-when-free.js
threshold-exclusive.js
weight-rounds-down.js
evals/compare/feature/workspace/
package.json
evals/compare/feature/workspace/docs/
spec.md

详细介绍

测试驱动开发

在每个红 → 绿循环中应用以下测试质量规则。

阅读 GLOSSARY.md,然后使用 docs/decisions/README.md,仅加载与被测行为相关的决策主题。如果代码、规范和决策契约在决策层面发生冲突,请明确指出冲突,而不是默默自行选择。测试名称和公共接口中应使用当前术语。

优质测试

通过公共接口测试行为,避免内部重构导致测试失效。使用说明能力测试内容的规范式名称。

仅在外部 API、时间和随机性等系统边界处使用模拟;优先使用真实测试数据库,而非模拟数据库。

接缝

接缝是测试观察行为而无需深入内部实现的公共边界。

创建新接缝前,先复用已有接缝。仅为稳定的用例或领域概念创建接缝,不要为名称可能变化的实现辅助项创建接缝。

根据已达成共识的行为和现有公共接口选择测试接缝,优先覆盖关键路径和复杂逻辑。简要说明所选接缝及其要验证的行为,然后开始编写第一个测试。

通过仓库证据解决技术上的不确定性。只有在预期行为仍不明确,或继续操作会改变已达成共识的产品契约时,才询问用户。

反模式

  • 与实现耦合:模拟内部协作者、测试私有方法,或通过旁路验证。这类测试会在实现改变而行为不变时失效。
  • 同义反复:使用与代码相同的逻辑推导预期值,导致断言必然通过。应使用已知字面值、演算示例或规范等独立来源。
  • 横向切片:在开始实现前编写大量测试。先实现一个失败测试及使其通过所需的最少代码,再选择下一个测试。

循环规则

  • 先红后绿。 先编写失败测试,再编写刚好足以使其通过的代码。不要预判未来的测试,也不要添加臆测功能。
  • 一次一个切片。 每个循环使用一个接缝、一个测试和一个最小实现。
  • 绿后重构。 重构期间保持测试通过。本循环不单独发起评审:完成后的差异应由负责该工作的工作流进行评审,或由用户发起评审。

评论

支持 Markdown