TDD 是一项测试驱动开发(Test-Driven Development)强制技能。激活后进入完整 TDD 模式,其铁律是先写会失败的测试,始终如此。适用触发场景包括:TDD、test-driven、test first、red-green-refactor、write tests first。
核心循环为 Red-Green-Refactor:RED 阶段为下一个行为写失败测试;GREEN 阶段只写刚好使测试通过的代码,不添加多余逻辑;REFACTOR 阶段在不改变行为的前提下清理代码,每次改动后测试都必须保持通过,然后重复循环。
使用协议分三步。RED:确定最小的下一个待实现行为,写一个以 it()/test()/def test_ 命名的测试描述该行为,运行后必须失败;若通过则说明测试写错了,并确认失败信息是正确失败而非语法错误。GREEN:写最少代码使测试通过,不加额外逻辑、默认参数或“锦上添花”功能,运行全部测试,新测试须通过且旧测试不破坏。REFACTOR:审视代码能否在不改变行为下更整洁,可参考 /ai-slop-cleaner 与 /coding-standards,每次改动后都运行测试,测试失败立即撤销。
TDD 门禁:先写代码后写测试时应停止、删除生产代码、先写测试;无先前代码时测试首次即通过,说明测试有误,需改为先失败;一个测试含多个行为时应拆分,一个测试一个行为;为求快跳过重构应返回先清理。测试是活文档,应命名为完整句子,如 it('returns empty array when input is empty', ...),避免 test1 等坏命名。
框架速查提供失败断言、单测运行命令:Vitest 用 expect(x).toBe(y) 与 npx vitest run -t "test name";Jest 用 expect(x).toBe(y) 与 npx jest -t "test name";pytest 用 assert x == y 与 pytest -k "test_name";cargo test 用 assert_eq!(x, y) 与 cargo test test_name;go test 用 t.Errorf(...) 与 go test -run TestName。
常见陷阱与修正:测试实现细节应改为测试行为(输出)而非内部(私有方法);一个测试覆盖十种行为应拆成原子测试;过度 mock 应只在系统边界(数据库、HTTP、文件系统)mock;缺少三角验证可写 2-3 个测试迫使正确实现浮现;未三角化的常量如 return 42 虽能通过一个测试,需加第二个测试迫使真实逻辑出现。
相关技能:@test-engineer 负责测试策略、框架检测、覆盖缺口分析;/ultraqa 负责测试、验证、修复、重复的 QA 循环;/verify 负责基于证据的完成验证。其他定价、平台或限制信息暂未提供。