tdd
Installation
SKILL.md
测试驱动开发
TDD 是“先让测试失败(变红),再让它通过(变绿)”的循环。本 skill 说明如何让这个循环产出值得保留的测试:什么是好的测试、测试放在哪里、有哪些反模式、循环有哪些规则。每一节在每一轮都适用:在循环开始前和进行中查阅,而不是事后补看。
探索代码库时,阅读 CONTEXT.md(如果存在),让测试名称和接口用词与项目的领域语言一致,并遵守相关区域的 ADR。
好的测试是什么样
测试通过公开接口验证行为,不验证实现细节。即使内部实现整个替换,测试也不需要跟着修改。好的测试读起来像规格:“用户可以用有效购物车结账”准确说明了系统具备什么能力,而且因为不关心内部结构,重构后依然有效。
每个测试都要说得出它能发现哪种破坏:写测试体之前,先回答“生产代码怎样修改会让这个测试失败?”答不上来时,围绕一个可观察的行为重新设计这个测试。
示例见 tests.md,mock 准则见 mocking.md。
接缝:测试放在哪里
接缝(seam)是测试所依托的公开边界:无需深入内部就能观察行为的接口。测试写在接缝上。
只在事先约定的接缝上测试。 不可能测试所有内容;事先约定接缝,才能把测试精力放在关键路径和复杂逻辑上,而不是每一个边缘情况。