关于 test-first-discipline
test-first-discipline 是一项供开发工作流调用的内部技能,规定行为变更必须先观察到失败测试,再编写最少的生产代码。它明确了适用范围、例外及与事后测试覆盖检查技能的区别。
主要功能
- 01要求先编写并观察失败测试
- 02再实现最少的行为代码
- 03涵盖新功能、修复和行为重构
- 04明确例外及用户跳过规则
- 05区分事后测试覆盖检查
适用场景
- 01按失败测试优先顺序实现功能
- 02修复缺陷前验证测试确实失败
- 03将行为实现纪律纳入开发工作流
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ fudesign2008/ open-skills --skill test-first-discipline安装后在 Claude Code 中输入/test-first-discipline确认已加载。
详细介绍
测试先行纪律
内部共享技能。先观察到测试失败的实现顺序的唯一事实来源。宿主在
dependencies中声明此技能,并在缺失时中止——不得静默回退。**名称说明:**有意不命名为
tdd或test-driven-development(外部技能仓库中的名称)。仅使用此名称。
铁律
未先观察到测试失败,绝不编写生产行为代码。
- 编写失败测试(或等效的自动化失败检查)。
- 运行它,并在当前会话中观察到失败。
- 编写通过测试所需的最少量生产代码。
- 重新运行;然后如有需要,在保持测试通过的同时重构。
如果在第 2 步之前编写了生产行为代码:删除它,并从失败测试重新开始。不要将其保留为“参考”,也不要“边写测试边调整”。
适用情况
**适用:**新功能、Bug 修复、影响行为的重构。
例外情况(除非用户另有要求):
- 一次性原型
- 生成的代码
- 不涉及待测行为的纯配置
- 纯文档
- 用户明确要求跳过,并简要记录理由
没有适用的例外或用户明确要求跳过,却以“这次就跳过”为由自圆其说,是不允许的。
与 test-suite-ensure 的区别
| 技能 | 职责 |
|---|---|
test-first-discipline | 顺序——生产行为代码之前先出现失败 |
test-suite-ensure | 事后处理——检测技术栈、搭建脚手架,为现有逻辑生成和运行覆盖率 |
不得将 test-suite-ensure 运行通过报告为符合本技能要求。同时使用两者的宿主:实现行为时遵循测试先行;之后调用 test-suite-ensure 来处理缺口或搭建脚手架(按宿主要求,可为建议性或强制性)。
禁止事项
- 仅在事后运行 test-suite-ensure 后声称符合测试先行要求
- 在本仓库中将此技能重命名为
tdd/test-driven-development或为其创建别名 - 对常规行为变更跳过经观察确认失败的步骤,且没有适用的例外或用户明确要求跳过
集成指南
- 宿主:在执行阶段添加一行指引——行为变更时加载此技能;将 test-suite-ensure 保留为独立的任务后确保步骤。
- 优先使用
user-invocable: false;用户通过 PDCA 宿主调用此技能。 - 与
completion-evidence-discipline配合:声称测试红/绿时,观察到的失败运行(以及之后的通过运行)必须是新鲜证据。
评论
支持 Markdown