name: tdd description: 测试驱动开发方法论及红-绿-重构工作流(原test-tdd)。此技能应在实践TDD、先写测试、在实现前设计测试或审查测试优先方法时使用。触发词包括“先写测试”、“代码前测试”、“红绿重构”、“测试驱动开发”。此技能不涵盖Vitest框架细节(使用vitest技能)或使用MSW进行API模拟(使用msw技能)。
社区测试驱动开发最佳实践
全面的测试驱动开发实践指南,专为AI代理和LLM设计。包含8个类别的42条规则,按影响优先级排序,以指导测试编写、重构和代码生成。
何时应用
参考这些指南当:
- 使用TDD工作流编写新测试
- 实施红-绿-重构循环
- 设计测试结构和组织
- 创建测试数据和夹具
- 审查或重构现有测试套件
TDD工作流
- 红: 编写一个定义期望行为的失败测试
- 绿: 编写最小代码使测试通过
- 重构: 清理代码同时保持测试绿
- 为每个新行为重复
规则类别按优先级
| 优先级 | 类别 | 影响 | 前缀 |
|---|---|---|---|
| 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- 遵循安排-执行-断言模式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- 保持单元测试在100毫秒以下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 - 遵循安排-执行-断言模式
相关技能
- 对于Vitest框架细节,参见
vitest技能 - 对于使用MSW进行API模拟,参见
msw技能
完整编译文档
对于包含所有规则扩展的完整指南:AGENTS.md