SuperAPI AI 工具集

tdd

编程与开发

查看项目

更新于 10-16 01:29

技能介绍

用途:这是一个测试驱动开发(TDD)参考技能,用于让红→绿循环产出值得长期保留的测试。适用于用户希望以测试先行方式构建功能或修复 bug、提到“red-green-refactor”循环、或想要集成测试的场景。

循环规则:先红后绿,先写失败测试,再写刚好能通过它的代码;不要预判未来测试或添加推测性功能。一次一个切片,每个循环一个切面、一个测试、一个最小实现。重构不属于循环本身,它属于评审阶段(见 code-review 技能),而非红→绿实现循环。

好测试的标准:测试通过公共接口验证行为,而非实现细节。代码可以完全改变,测试不应随之改变。好测试读起来像规格说明,并能在重构后存活,因为它不关心内部结构。示例见 tests.md,mock 指南见 mocking.md。

切面(seams):切面是你测试的公共边界,即观察行为而不深入内部的接口。测试只写在预先商定的切面上。写任何测试前,先写下待测切面并与用户确认,未确认的切面不写测试。你无法测试一切,提前商定切面能让测试精力落在关键路径和复杂逻辑上。应询问:“公共接口是什么,我们应该测试哪些切面?”当接口形态本身存疑——模块深度、切面位置、接口应暴露什么——可使用 /codebase-design 技能获取统一术语(module、interface、depth、seam、adapter、leverage、locality)。它是供查阅的参考,而非要运行的会话。

反模式:一是实现耦合——mock 内部协作者、测试私有方法、或通过旁路验证(如查询数据库而非使用接口);特征是重构时行为未变测试却失败。二是同义反复——断言按代码同样方式重算期望值,于是构造上必然通过、永远无法与代码产生分歧;期望值必须来自独立事实来源。三是横向切片——先写完所有测试再写全部实现,这验证的是想象的行为,测试对真实变化失去敏感;应改为纵向切片,一个测试→一个实现→重复。

其他:探索代码库时若有 CONTEXT.md 应阅读,使测试名称和接口词汇匹配项目领域语言,并尊重所涉区域的 ADR。