# Tdd

> 写代码或测试前判断需要哪些验证，避免无用测试。只读问答不触发。

- Skill: `mariojames/tdd` (Agent Skill, multi-file: 3 files)
- Install (CLI): `npx skillmds@latest add mariojames/tdd`
- Raw SKILL.md: https://api.skillmd.com/api/skills/mariojames/tdd/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: MarioJames (https://skillmd.com/u/mariojames)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/mariojames/tdd

---


# 测试与 TDD

默认快速开发。测试保护当前需要的行为，不记录代码改动历史。

## 选择验证方式

先看受影响的现有验证。新增用例应针对当前需求中的具体错误和未覆盖风险；新增、重构或删除文件、函数本身不是理由。这个判断不要求额外文档或固定格式汇报。

- 有可算错的业务规则、映射、权限或失败路径时，用少量行为测试补缺口；修 bug 先复现，再修复并验证。探索阶段先跑通，契约稳定后固定预期。
- 纯重构、接线、类型和薄包装优先工程检查与已有消费者测试；文案、样式和布局做浏览器验收，同步必要的已有断言或 locator。
- 删除功能、废弃分支或死代码时直接清理实现及专属测试、fixture、mock 和快照；混合用例保留仍有效的断言，不要求删一个补一个。

## 测试与清理原则

- 预期来自需求、协议或独立事实。错误实现应让断言失败，内部等价重构应仍通过；不复制实现生成答案，也不锁死非契约性的结构。
- 执行真实被测路径，只在必要边界替换外部依赖。验证关键结果，确保断言实际执行、异步结果被等待、错误传到测试运行器。
- 不为覆盖率或用例数量堆测试，不为凑用例新增业务不需要的实现。不同层的用例应覆盖不同失败原因。
- **删除不留防恢复测试**：不新增「block recovery」、源码禁词或旧文件／符号不存在的守卫，不把旧测试改成「已移除版本」，也不留下空壳、跳过用例或占位兼容实现。清理残留用一次性搜索和工程检查，不固化成扫描脚本或 CI 规则。
- 删除动作不产生新的拒绝或兼容契约；当前需求确实要求的负向行为仍应验证，例如越权不能写入、响应不得泄露敏感字段。

判断删除、mock、快照等具体用例的价值，或需要命名与断言示例时，按需查看 [常见误区与来源](references/test-value.md)。

## 完成条件

沿用仓库现有验证方式，不为小改动新建测试栈。运行受影响的检查，前端变更完成浏览器验收；仅在新失败或未覆盖风险需要时扩大范围。测试顺序服务于契约验证和错误复现，不机械追求红绿流程。

已有测试失败时，按当前需求判断：失效断言应更新或删除；仍有效的断言不能为变绿而放宽、跳过或照抄实际输出。修复当前改动及直接相关的问题，复验后交付，不借机重写整套测试。没有新增测试也可以完整交付，报告实际验证结果即可。

