用途:提供统一的测试工程规范,用于编写测试、设计测试策略、审查测试与修复缺陷。
TDD 流程(对所有代码改动强制):RED 阶段先写测试并运行,确认其因目标缺失行为或回归而失败;GREEN 阶段写最小实现使测试通过;REFACTOR 阶段清理重复、改善命名并确认仍通过;VERIFY 阶段执行语言/项目全部质量检查命令,直至 0 错误且无回归,任一失败都不得进入下一阶段。例外:纯配置文件、仅文档、紧急修复(须随后补测试)、探索性 spike(合并前丢弃或重写)、构建部署脚本(含业务逻辑除外)。
核心思想:测试是一等代码;快速反馈、可靠、可复现、相互独立。覆盖率仅作为发现未测区域诊断信号,而非目标,重点覆盖关键路径与业务逻辑;阈值以项目 CI、任务文件、工作计划或设计文档为准。
测试特征:独立、可复现、快速、自检、及时。测试层级按证明义务选择单元/集成/端到端,更宽的测试不能替代必需的聚焦检查。
设计原则:AAA 模式;一个测试验证一个行为;描述性命名,推荐 "should [行为] when [条件]";测试自建数据、无执行顺序依赖、自行清理,setup/teardown 配套,teardown 在失败时也须执行。
Mock 规则:仅在边界处 mock,内部工具用真实实现;数据层测试须用真实或生产级数据访问来验证 schema、查询、约束、迁移;外部不可用服务除非其契约或失败行为是被测边界,否则隔离。有设计文档 Test Boundaries 时以其为基准。
质量要求:断言使用字面量期望值(期望值 ≠ mock 返回值),验证返回值与状态而非调用顺序;每个测试至少一条断言;覆盖空/零/最大/错误与 happy path;不得断言私有状态或私有调用顺序(除非该内部契约即证明目标)。
反模式:永远通过的空测试、顺序依赖、外部状态依赖、需要自身测试的复杂逻辑、测实现细节、过度 mock、重复代码、不稳定测试(须消除时间依赖、用确定性数据、正确清理、修竞态)。
回归与遗留代码:每个缺陷修复都加测试;重构前先写特性测试,先测既有行为再逐步提升覆盖。提交前检查:全部通过、无跳过或注释、无调试代码、阈值通过、运行时间合理。
语言专属模式另见 TypeScript(Vitest/RTL/Playwright)参考文档,具体获取方式暂未提供。