关于 tdd
面向 AI Agent 和大模型的测试驱动开发指南,涵盖红-绿-重构循环,以及测试设计、隔离、数据和可靠性实践。按优先级组织的规则适用于编写、审查和重构测试。
主要功能
- 01涵盖 8 类的 42 条规则
- 02红-绿-重构工作流
- 03以行为为中心的测试设计
- 04测试隔离与数据实践
- 05可靠性与测试策略指导
适用场景
- 01先写测试再实现功能
- 02按行为组织测试套件
- 03创建隔离且确定性强的测试
- 04审查或重构现有测试
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ pproenca/ dot-skills --skill tdd安装后在 Claude Code 中输入/tdd确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
AGENTS.mdmetadata.jsonREADME.mdassets/templates/_template.mdreferences/_sections.mdassert-custom-matchers.mdassert-error-messages.mdassert-no-assertions-antipattern.mdassert-snapshot-testing.mdassert-specific-assertions.mdcycle-maintain-test-list.mdcycle-minimal-code-to-pass.mdcycle-refactor-after-green.mdcycle-small-increments.mdcycle-verify-test-fails-first.mdcycle-write-test-first.mddata-avoid-mystery-guests.mddata-builder-pattern.mddata-minimal-setup.mddata-unique-identifiers.mddata-use-factories.mddesign-aaa-pattern.mddesign-avoid-logic-in-tests.mddesign-descriptive-test-names.mddesign-one-assertion-per-test.mddesign-test-behavior-not-implementation.mddesign-test-edge-cases.mdisolate-deterministic-tests.mdisolate-mock-external-dependencies.mdisolate-no-shared-state.md详细介绍
社区测试驱动开发最佳实践
面向 AI Agent 和大模型的测试驱动开发实践综合指南。包含 8 个类别中的 42 条规则,并按影响程度排序,以指导测试编写、重构和代码生成。
适用场景
在以下情况下参考这些指南:
- 使用 TDD 工作流编写新测试
- 实施红—绿—重构循环
- 设计测试结构和组织方式
- 创建测试数据和测试夹具
- 审查或重构现有测试套件
TDD 工作流
- RED:编写一个定义预期行为的失败测试
- GREEN:编写最少量的代码,让测试通过
- REFACTOR:在保持测试通过的同时清理代码
- 对每种新行为重复上述步骤
按优先级划分的规则类别
| 优先级 | 类别 | 影响 | 前缀 |
|---|---|---|---|
| 1 | 红—绿—重构循环 | 关键 | cycle- |
| 2 | 测试设计原则 | 关键 | design- |
| 3 | 测试隔离与依赖项 | 高 | isolate- |
| 4 | 测试数据管理 | 高 | data- |
| 5 | 断言与验证 | 中 | assert- |
| 6 | 测试组织与结构 | 中 | org- |
| 7 | 测试性能与可靠性 | 中 | perf- |
| 8 | 测试金字塔与策略 | 低 | strat- |
快速参考
1. 红—绿—重构循环(关键)
cycle-write-test-first- 先编写测试,再编写实现cycle-minimal-code-to-pass- 只编写足以让测试通过的代码cycle-refactor-after-green- 测试通过后立即重构cycle-verify-test-fails-first- 编写代码前先确认测试会失败cycle-small-increments- 以小步增量推进cycle-maintain-test-list- 维护测试列表
2. 测试设计原则(关键)
design-test-behavior-not-implementation- 测试行为,而非实现design-one-assertion-per-test- 每个测试只包含一个逻辑断言design-descriptive-test-names- 使用描述性测试名称design-aaa-pattern- 遵循 Arrange-Act-Assert 模式design-test-edge-cases- 测试边缘情况和边界design-avoid-logic-in-tests- 避免在测试中加入逻辑
3. 测试隔离与依赖项(高)
isolate-mock-external-dependencies- 模拟外部依赖项isolate-no-shared-state- 避免测试之间共享可变状态isolate-deterministic-tests- 编写确定性测试isolate-prefer-stubs-over-mocks- 查询时优先使用桩,而非模拟对象isolate-use-dependency-injection- 使用依赖注入以提高可测试性
4. 测试数据管理(高)
data-use-factories- 使用工厂创建测试数据data-minimal-setup- 尽量简化测试设置data-avoid-mystery-guests- 避免使用神秘客data-unique-identifiers- 每个测试使用唯一标识符data-builder-pattern- 复杂对象使用建造者模式
5. 断言与验证(中)
assert-specific-assertions- 使用具体的断言assert-error-messages- 断言错误消息和类型assert-no-assertions-antipattern- 每个测试都必须包含断言assert-custom-matchers- 为领域断言创建自定义匹配器assert-snapshot-testing- 谨慎使用快照测试
6. 测试组织与结构(中)
org-group-by-behavior- 按行为而非方法对测试分组org-file-structure- 遵循一致的测试文件结构org-setup-teardown- 适当使用设置和清理钩子org-test-utilities- 提取可复用的测试工具org-parameterized-tests- 针对不同变体使用参数化测试
7. 测试性能与可靠性(中)
perf-fast-unit-tests- 将单元测试控制在 100ms 以内perf-avoid-network-calls- 消除单元测试中的网络调用perf-fix-flaky-tests- 立即修复不稳定的测试perf-parallelize-tests- 并行运行相互独立的测试perf-avoid-sleep- 避免使用任意的休眠调用
8. 测试金字塔与策略(低)
strat-test-pyramid- 遵循测试金字塔strat-mutation-testing- 使用变异测试验证测试质量strat-coverage-targets- 设定有意义的覆盖率目标strat-integration-boundaries- 在服务边界测试集成strat-e2e-critical-paths- 将端到端测试限制在关键用户路径
使用方法
阅读各个参考文件,了解详细说明和代码示例:
- 章节定义 - 分类结构和影响级别
- 规则模板 - 用于添加新规则的模板
- cycle-write-test-first - 在实现之前编写测试
- design-aaa-pattern - 遵循 Arrange-Act-Assert 模式
相关技能
- 有关 Vitest 框架的具体信息,请参阅
vitest技能 - 有关使用 MSW 模拟 API,请参阅
msw技能
完整编译文档
如需查看包含所有展开规则的完整指南:AGENTS.md
评论
支持 Markdown