mirror of
https://github.com/affaan-m/everything-claude-code.git
synced 2026-04-07 09:43:30 +08:00
docs(zh-CN): sync Chinese docs with latest upstream changes (#304)
* docs(zh-CN): sync Chinese docs with latest upstream changes * update --------- Co-authored-by: neo <neo.dowithless@gmail.com>
This commit is contained in:
@@ -1,28 +1,69 @@
|
||||
# 测试覆盖率
|
||||
|
||||
分析测试覆盖率并生成缺失的测试:
|
||||
分析测试覆盖率,识别缺口,并生成缺失的测试以达到 80%+ 的覆盖率。
|
||||
|
||||
1. 运行带有覆盖率的测试:npm test --coverage 或 pnpm test --coverage
|
||||
## 步骤 1:检测测试框架
|
||||
|
||||
2. 分析覆盖率报告 (coverage/coverage-summary.json)
|
||||
| 指标 | 覆盖率命令 |
|
||||
|-----------|-----------------|
|
||||
| `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 ./...` |
|
||||
|
||||
3. 识别覆盖率低于 80% 阈值的文件
|
||||
## 步骤 2:分析覆盖率报告
|
||||
|
||||
4. 对于每个覆盖率不足的文件:
|
||||
* 分析未测试的代码路径
|
||||
* 为函数生成单元测试
|
||||
* 为 API 生成集成测试
|
||||
* 为关键流程生成端到端测试
|
||||
1. 运行覆盖率命令
|
||||
2. 解析输出(JSON 摘要或终端输出)
|
||||
3. 列出**覆盖率低于 80%** 的文件,按最差情况排序
|
||||
4. 对于每个覆盖率不足的文件,识别:
|
||||
* 未测试的函数或方法
|
||||
* 缺失的分支覆盖率(if/else、switch、错误路径)
|
||||
* 增加分母的死代码
|
||||
|
||||
5. 验证新测试通过
|
||||
## 步骤 3:生成缺失的测试
|
||||
|
||||
6. 显示覆盖率指标的前后对比
|
||||
对于每个覆盖率不足的文件,按以下优先级生成测试:
|
||||
|
||||
7. 确保项目整体覆盖率超过 80%
|
||||
1. **快乐路径** — 使用有效输入的核心功能
|
||||
2. **错误处理** — 无效输入、缺失数据、网络故障
|
||||
3. **边界情况** — 空数组、null/undefined、边界值(0、-1、MAX\_INT)
|
||||
4. **分支覆盖率** — 每个 if/else、switch case、三元运算符
|
||||
|
||||
重点关注:
|
||||
### 测试生成规则
|
||||
|
||||
* 正常路径场景
|
||||
* 错误处理
|
||||
* 边界情况(null、undefined、空值)
|
||||
* 边界条件
|
||||
* 将测试放在源代码旁边:`foo.ts` → `foo.test.ts`(或遵循项目惯例)
|
||||
* 使用项目中现有的测试模式(导入风格、断言库、模拟方法)
|
||||
* 模拟外部依赖项(数据库、API、文件系统)
|
||||
* 每个测试都应该是独立的 — 测试之间没有共享的可变状态
|
||||
* 描述性地命名测试:`test_create_user_with_duplicate_email_returns_409`
|
||||
|
||||
## 步骤 4:验证
|
||||
|
||||
1. 运行完整的测试套件 — 所有测试必须通过
|
||||
2. 重新运行覆盖率 — 验证改进
|
||||
3. 如果仍然低于 80%,针对剩余的缺口重复步骤 3
|
||||
|
||||
## 步骤 5:报告
|
||||
|
||||
显示前后对比:
|
||||
|
||||
```
|
||||
Coverage Report
|
||||
──────────────────────────────
|
||||
File Before After
|
||||
src/services/auth.ts 45% 88%
|
||||
src/utils/validation.ts 32% 82%
|
||||
──────────────────────────────
|
||||
Overall: 67% 84% ✅
|
||||
```
|
||||
|
||||
## 重点关注领域
|
||||
|
||||
* 具有复杂分支的函数(高圈复杂度)
|
||||
* 错误处理程序和 catch 块
|
||||
* 整个代码库中使用的工具函数
|
||||
* API 端点处理程序(请求 → 响应流程)
|
||||
* 边界情况:null、undefined、空字符串、空数组、零、负数
|
||||
|
||||
Reference in New Issue
Block a user