mirror of
https://github.com/affaan-m/everything-claude-code.git
synced 2026-03-30 21:53:28 +08:00
2.6 KiB
2.6 KiB
测试覆盖率
分析测试覆盖率,识别缺口,并生成缺失的测试以达到 80%+ 的覆盖率。
步骤 1:检测测试框架
| 指标 | 覆盖率命令 |
|---|---|
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 ./... |
步骤 2:分析覆盖率报告
- 运行覆盖率命令
- 解析输出(JSON 摘要或终端输出)
- 列出覆盖率低于 80% 的文件,按最差情况排序
- 对于每个覆盖率不足的文件,识别:
- 未测试的函数或方法
- 缺失的分支覆盖率(if/else、switch、错误路径)
- 增加分母的死代码
步骤 3:生成缺失的测试
对于每个覆盖率不足的文件,按以下优先级生成测试:
- 快乐路径 — 使用有效输入的核心功能
- 错误处理 — 无效输入、缺失数据、网络故障
- 边界情况 — 空数组、null/undefined、边界值(0、-1、MAX_INT)
- 分支覆盖率 — 每个 if/else、switch case、三元运算符
测试生成规则
- 将测试放在源代码旁边:
foo.ts→foo.test.ts(或遵循项目惯例) - 使用项目中现有的测试模式(导入风格、断言库、模拟方法)
- 模拟外部依赖项(数据库、API、文件系统)
- 每个测试都应该是独立的 — 测试之间没有共享的可变状态
- 描述性地命名测试:
test_create_user_with_duplicate_email_returns_409
步骤 4:验证
- 运行完整的测试套件 — 所有测试必须通过
- 重新运行覆盖率 — 验证改进
- 如果仍然低于 80%,针对剩余的缺口重复步骤 3
步骤 5:报告
显示前后对比:
覆盖率报告
──────────────────────────────
文件 变更前 变更后
src/services/auth.ts 45% 88%
src/utils/validation.ts 32% 82%
──────────────────────────────
总计: 67% 84% ✅
重点关注领域
- 具有复杂分支的函数(高圈复杂度)
- 错误处理程序和 catch 块
- 整个代码库中使用的工具函数
- API 端点处理程序(请求 → 响应流程)
- 边界情况:null、undefined、空字符串、空数组、零、负数