在 Jest 中开启代码覆盖率报告需添加 --coverage 参数,Jest 会生成 HTML 和文本报告;可通过 collectCoverageFrom、coverageThreshold 和 coverageReporters 精细配置范围、阈值与格式,并注意排除无关文件以确保准确性。

在 Jest 中开启代码覆盖率报告,只需添加 --coverage 参数运行测试即可,Jest 会自动生成 HTML 和文本格式的覆盖率摘要。
启用基础覆盖率报告
Jest 默认不生成覆盖率数据,需显式启用。最简单方式是在命令行中加入 --coverage:
-
npm test -- --coverage(如果
test脚本是jest) - npx jest --coverage
- yarn test --coverage
执行后,Jest 会在终端输出简明的覆盖率表格(如 statements、branches、functions、lines),并在项目根目录下生成 coverage/ 文件夹,其中 coverage/index.html 是可交互的 HTML 报告。
配置覆盖率范围和阈值
可通过 jest.config.js 精细控制:
立即学习“Java免费学习笔记(深入)”;
-
指定统计范围:用
collectCoverageFrom明确哪些文件参与计算,避免 node_modules 或测试文件被误计入
collectCoverageFrom: ["src/**/*.{js,jsx,ts,tsx}", "!src/**/*.test.{js,jsx,ts,tsx}"] -
设置最低阈值:用
coverageThreshold强制达标,未达则测试失败
coverageThreshold: { global: { branches: 80, functions: 80, lines: 80, statements: 80 } }
生成多种格式报告
默认只生成 HTML 和 text,如需其他格式(如 lcov 供 CI 工具解析),可在配置中扩展 coverageReporters:
- coverageReporters: ["html", "lcov", "text-summary"]
-
lcov格式常用于 SonarQube、Codecov 等平台 -
text-summary在终端输出精简汇总,适合 CI 日志查看
排除无关文件与提升准确性
覆盖率失真常因配置不当导致。建议:
- 确保
transformIgnorePatterns不跳过需要转译的依赖(尤其使用 ES6+ 的第三方库) - 若用 TypeScript,确认
ts-jest已正确配置,且sourceMaps: true开启(有助于精准定位源码行) - 避免在
setupFiles中引入大量非业务代码,否则可能拉低函数/行覆盖率
不复杂但容易忽略。


















