在 Jest 或 Vitest 中开启代码覆盖率需显式启用:Jest 用 --coverage 参数,Vitest 需在配置中设 coverage.enabled: true 并指定 provider 与 reporter;二者均需配置 collectCoverageFrom/include 和 exclude 以精准统计,且仅当测试实际执行目标模块时才计入覆盖率。

在 Jest 或 Vitest 中开启代码覆盖率统计,核心都是显式启用覆盖率收集——工具默认不启动,必须加参数或配选项,否则终端不会输出覆盖率数字,也不会生成报告。
Jest 中启用覆盖率
最简方式是命令行加 --coverage:
-
npm test -- --coverage(test 脚本为jest) npx jest --coverageyarn test --coverage
执行后,Jest 会在终端打印四类基础指标(statements、branches、functions、lines),并在项目根目录生成 coverage/ 文件夹,其中 coverage/index.html 是可交互的 HTML 报告。
Vitest 中启用覆盖率
Vitest 需在配置中声明启用,不能仅靠 CLI 参数:
- 在
vitest.config.ts中设置coverage.enabled: true - 同时指定 provider(推荐
'v8',轻量且准确)和 reporter(如['text', 'html'])
运行命令为:vitest run --coverage。注意:仅用 vitest 或 vitest watch 不会触发覆盖率计算。
共通关键配置点
无论 Jest 还是 Vitest,要让覆盖率真实反映业务代码质量,建议同步处理三件事:
- 用
collectCoverageFrom(Jest)或include(Vitest)明确指定源码路径,例如src/**/*.{js,ts,tsx} - 用
exclude排除类型定义、测试文件、工具函数等,避免拉低数值 - 确保测试真正 import 并执行了目标模块——覆盖率只统计“被加载且执行过”的代码,不校验断言是否合理
验证是否生效
终端出现类似以下表格即表示开启成功:
| File | % Stmts | % Branch | % Funcs | % Lines ||---------------|---------|----------|---------|---------|
| src/utils/ | 92.3 | 85.7 | 100 | 92.3 |
若无此输出,检查是否漏掉 --coverage 参数,或配置中未设 enabled: true。


















