JavaScript测试中开启覆盖率统计需依测试运行器配置:Jest用--coverage参数或jest.config.js;Vitest推荐c8或@vitest/coverage-v8并配vitest.config.ts;Mocha需搭配nyc,在package.json中定义脚本。

在 JavaScript 测试中开启覆盖率统计输出,核心是借助测试运行器(如 Jest、Vitest 或 Mocha)内置的代码覆盖率支持,并正确配置相关选项。
使用 Jest 开启覆盖率输出
Jest 默认集成 Istanbul(通过 jest-junit 或 babel-plugin-istanbul),只需添加命令行参数或配置项即可生成覆盖率报告。
- 命令行快速启用:
jest --coverage(默认输出文本摘要) - 生成 HTML 报告(推荐查看细节):
jest --coverage --coverage-reporters=html - 同时输出多种格式:
jest --coverage --coverage-reporters=html --coverage-reporters=text-summary - 指定覆盖阈值(失败时退出):
jest --coverage --coverage-threshold='{"global": {"lines": 90}}
也可在 jest.config.js 中固化配置:
Java项目代码review工具。分析Git变更+完整调用链路上下文,推断业务需求,进行多维度评分和分类汇总,生成完整PRD文档。包含细粒度Java代码审查清单(Null安全、异常处理、Streams、并发、equals/hashCode、资源管理、API设计、性能、MyBatis/ORM、事务边界、SQL/DD...
module.exports = {
collectCoverage: true,
coverageDirectory: 'coverage',
coverageReporters: ['html', 'text-summary'],
coverageThreshold: {
global: { lines: 80, statements: 80, branches: 70, functions: 85 }
}
};
使用 Vitest 开启覆盖率输出
Vitest 基于 istanbul 或 c8(推荐 c8,更轻量、支持 ESM 和原生 V8 覆盖率)。
立即学习“Java免费学习笔记(深入)”;
- 安装依赖:
npm install -D c8(若用 c8)或npm install -D @vitest/coverage-v8(Vitest 官方插件) - 启用 v8 覆盖率(推荐):
vitest run --coverage(自动使用@vitest/coverage-v8) - 显式指定 reporter:
vitest run --coverage --coverage.reporter=html --coverage.reporter=text-summary - 在
vitest.config.ts中配置:
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
coverage: {
enabled: true,
reporter: ['html', 'text-summary'],
exclude: ['node_modules/', 'tests/', 'dist/']
}
}
});
使用 Mocha + nyc(Istanbul)
Mocha 本身不带覆盖率,需搭配 nyc(Istanbul CLI 工具)。
- 安装:
npm install -D nyc - 在
package.json中添加脚本:"test:coverage": "nyc mocha" - 运行:
npm run test:coverage(默认输出 text summary) - 生成 HTML 报告:
nyc --reporter=html --reporter=text-summary mocha - 自定义
nyc.config.js可细化包含/排除逻辑和阈值
注意事项与常见问题
-
ESM 模块注意:Jest 默认不完全支持顶层 ESM;Vitest + c8 或
@vitest/coverage-v8对 ESM 更友好 -
忽略文件:务必通过
coveragePathIgnorePatterns(Jest)或exclude(Vitest)跳过测试文件、类型声明、构建产物 -
源码映射:确保测试运行时能正确解析源码(如启用
sourceMaps: true,尤其在使用 TypeScript 或打包工具时) - CI 环境:HTML 报告可上传至 CI 平台(如 Codecov、Coveralls),需配合对应 token 和上传脚本

















