Jest中快速生成覆盖率报告需运行npm test -- --coverage,配置collectCoverageFrom和coverageThreshold控制范围与阈值,Vite项目推荐Vitest并启用test.coverage,常见问题如覆盖率0%需检查路径匹配和模块导入。

编写 JS 代码覆盖率速查手册,核心是让开发者能 30 秒内查到关键命令、配置项和常见问题解法,不讲原理,只列动作。重点覆盖 Jest + Vite / Webpack 场景,兼顾 Node 环境。
一、快速生成覆盖率报告(Jest 默认)
确保项目已安装 jest(含 @jest/test-runner):
-
运行一次全量覆盖率:
npm test -- --coverage或yarn test --coverage -
只看未覆盖的文件:
yarn test --coverage --coverageThreshold={"global":{"lines":100}}(触发失败提示) -
输出 HTML 可视化报告:默认生成
coverage/lcov-report/index.html,直接用浏览器打开
二、关键配置速查(jest.config.js)
这些字段最常被修改,按需复制粘贴:
-
只测 src/ 下的 .ts/.js 文件:
collectCoverageFrom: ["src/**/*.{js,ts}"], -
排除测试文件和类型声明:
coveragePathIgnorePatterns: ["/node_modules/", "/__tests__/", "\.d\.ts$"], -
设定最低阈值(CI 中强制检查):
coverageThreshold: { global: { branches: 80, functions: 90, lines: 90, statements: 90 } } -
输出多种格式(如同时要 lcov 和 text):
coverageReporters: ["html", "lcov", "text-summary"]
三、Vite 项目跑覆盖率(非 Jest)
Vite 默认不集成覆盖率,推荐用 vitest(轻量、原生支持):
-
安装:
npm install -D vitest -
在 vite.config.ts 中启用 coverage:
export default defineConfig({<br> test: {<br> coverage: {<br> provider: 'v8', // 或 'istanbul'<br> reporter: ['html', 'text'],<br> include: ['src/**'],<br> exclude: ['src/**/*.test.*', 'src/types']<br> }<br> }<br>) -
运行:
npx vitest run --coverage
四、常见问题快修
-
覆盖率 0%?:检查
collectCoverageFrom路径是否匹配源码位置;确认测试文件实际 import 了被测模块(不是 mock) -
HTML 报告打不开?:不要双击打开,用
serve -s coverage/lcov-report启服务,或配 VS Code 插件 “Open in Browser” -
ESM 报错 “Cannot use import statement”?:Jest 需设
transform: { "^.+\.(js|ts)$": "babel-jest" }并装@babel/preset-env -
想跳过某行/函数不统计?:在代码中加注释
// istanbul ignore next(Jest)或// vitest-coverage-ignore-next(Vitest)


















