跳转到内容
关系图谱

tdd(Matt)

431 字 1 分钟

属性 8
repo
mattpocock_skills
skill
tdd
source
mattpocock_skills/skills/engineering/tdd/SKILL.md
invoke
model
phase
build
cost
low
status
stable
local
outdated
一句话

红到绿的竖切片循环:在事先约定的 seam 上写一个会失败的测试,再写刚好让它通过的代码;重构不在循环里,留给评审。

何时用 ​

  • 适合:测试先行地做功能或修 bug;需要集成测试;被 matt-implement 在约定的 seam 上调用。
  • 不适合:接口形状还没想清楚(先用 matt-codebase-design 的词汇讨论 seam);纯配置或文档改动。

怎么用 ​

text
先写测试再实现:给购物车加满减规则,先和我确认要测哪些 seam
  1. 读 GLOSSARY.md 和相关 ADR,测试名用项目术语。
  2. 列出要测的 seam(公开接口),每个注明能抓到什么、会漏掉什么,和用户确认。没确认的 seam 不写测试。
  3. 一次一个切片:一个失败的测试,最小实现,再下一个。
  4. 期望值来自独立来源(已知字面量、需求、示例),不能照着实现重算。

产出 ​

  • 只通过公开接口验证行为的测试,以及刚好让它们通过的实现。

要点与坑 ​

  • 三种反模式:耦合实现(mock 内部协作者、测私有方法)、同义反复(用和代码一样的算法算期望值)、横向切片(先写完全部测试再写实现)。
  • 「重构不属于循环」是 Matt 版的特点,和 addy-test-driven-development 的红绿重构不同。
  • 参考文件:tests.md(好测试示例)、mocking.md(mock 原则)。
本机版本差异

本机旧版读 CONTEXT.md,仓库版读 GLOSSARY.md;仓库版还要求给每个 seam 标注能抓到和漏掉什么。

关联 ​