测试覆盖率(Test Coverage)

中级 Intermediate 流程型 Process ⚡ Claude Code 专属 ⚡ Claude Code Optimized
3 min read · 128 lines

分析覆盖率缺口,自动生成缺失测试达到 80% 目标

测试覆盖率(Test Coverage)

来源: affaan-m/everything-claude-code 原始文件: commands/test-coverage.md, rules/common/testing.md 整理日期: 2026-02-21

最低测试覆盖率要求:80%

必需的测试类型

  1. 单元测试(Unit Tests) — 单个函数、工具方法、组件
  2. 集成测试(Integration Tests) — API 端点、数据库操作
  3. E2E 测试(E2E Tests) — 关键用户流程(根据语言选择框架)

步骤一:检测测试框架

识别标志 覆盖率命令
jest.config.*package.json 中有 jest npx jest --coverage --coverageReporters=json-summary
vitest.config.* npx vitest run --coverage
pytest.ini / pyproject.toml 中有 pytest pytest --cov=src --cov-report=json
Cargo.toml cargo llvm-cov --json
pom.xml 且含 JaCoCo mvn test jacoco:report
go.mod go test -coverprofile=coverage.out ./...

步骤二:分析覆盖率报告

  1. 运行覆盖率命令
  2. 解析输出(JSON 摘要或终端输出)
  3. 列出 低于 80% 覆盖率 的文件,按最差排序
  4. 对每个未充分覆盖的文件,识别:
    • 未测试的函数或方法
    • 缺失的分支覆盖(if/else、switch、错误路径)
    • 膨胀分母的死代码

步骤三:生成缺失的测试

对每个覆盖不足的文件,按以下优先级生成测试:

  1. 正常路径(Happy Path) — 使用有效输入的核心功能
  2. 错误处理 — 无效输入、缺失数据、网络故障
  3. 边界情况(Edge Cases) — 空数组、null/undefined、边界值(0、-1、MAX_INT)
  4. 分支覆盖 — 每个 if/else、switch case、三元运算

测试生成规则

  • 测试文件放在源文件旁边:foo.ts 对应 foo.test.ts(或遵循项目约定)
  • 使用项目中已有的测试模式(导入方式、断言库、Mock 方案)
  • Mock 外部依赖(数据库、API、文件系统)
  • 每个测试应独立运行 — 测试之间不共享可变状态
  • 使用描述性命名:test_create_user_with_duplicate_email_returns_409

步骤四:验证

  1. 运行完整测试套件 — 所有测试必须通过
  2. 重新运行覆盖率 — 验证改善情况
  3. 如果仍低于 80%,对剩余缺口重复步骤三

步骤五:生成报告

展示前后对比:

覆盖率报告
──────────────────────────────
文件                         之前    之后
src/services/auth.ts        45%     88%
src/utils/validation.ts     32%     82%
──────────────────────────────
总体:                       67%     84%

测试驱动开发(TDD)

必须遵循的工作流

  1. 先写测试(RED)— 编写描述预期行为的测试
  2. 运行测试 — 测试应该失败
  3. 编写最小实现(GREEN)— 用最少的代码让测试通过
  4. 运行测试 — 测试应该通过
  5. 重构(IMPROVE)— 改进代码质量
  6. 验证覆盖率(80%+)

重点关注区域

  • 复杂分支逻辑的函数(高圈复杂度 / Cyclomatic Complexity)
  • 错误处理器和 catch 块
  • 跨代码库使用的工具函数
  • API 端点处理器(请求到响应的完整流程)
  • 边界情况:null、undefined、空字符串、空数组、零、负数

排查测试失败

  1. 使用 tdd-guide Agent 辅助
  2. 检查测试隔离性
  3. 验证 Mock 是否正确
  4. 修复实现而非测试(除非测试本身有误)

Agent 支持

  • tdd-guide — 在开发新功能时主动使用,强制执行"先写测试"的工作流

相关技能 Related Skills