vitest 中设置覆盖率红线阈值需在 vitest.config.ts 的 coverage.thresholds 中配置 lines、branches、functions、statements 等最小百分比,未达标则测试失败;支持全局阈值、perfile 逐文件校验及 exclude/include 精确控制统计范围。

在 Vitest 中设置最低代码覆盖率红线阈值,核心是通过 vitest.config.ts(或 .js)配置 coverage 选项中的 thresholds 字段。它支持按文件、分支、函数、语句等维度设定最小百分比,未达标时测试会失败。
配置全局覆盖率阈值
在 vitest.config.ts 的 coverage 配置中添加 thresholds 对象,指定各项最低要求:
-
statements:语句覆盖率(如
if、return等是否执行) -
branches:分支覆盖率(如
if/else、三元表达式各分支是否覆盖) - functions:函数覆盖率(导出/内部函数是否被调用)
- lines:行覆盖率(与 statements 基本一致,Vitest 中常等价使用)
示例配置(要求整体语句和分支覆盖率均不低于 80%):
```tsimport { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
coverage: {
provider: 'v8', // 或 'istanbul'
reporter: ['text', 'lcov'],
thresholds: {
lines: 80,
branches: 80,
functions: 80,
statements: 80,
},
},
},
});
```
设置 per-file(单文件)阈值
若希望对特定文件(如核心逻辑模块)要求更高,可用 perFile: true 启用逐文件检查,并配合 autoUpdate: true(首次运行自动生成基准)或手动指定 statements 等字段:
coverage: {
provider: 'v8',
thresholds: {
perFile: true,
statements: 90,
branches: 85,
},
},
```
启用 perFile 后,任一源文件未达阈值即导致整个测试失败。
排除不需覆盖的文件
避免因类型定义、配置文件或第三方代码拉低覆盖率,用 exclude 或 include 精确控制范围:
exclude: ['**/*.d.ts', '**/types/**', '**/test-utils/**']-
include: ['src/**/*.{ts,tsx}'](推荐显式包含源码)
注意:exclude 会影响覆盖率统计基数,合理排除能让阈值更真实反映业务代码质量。
运行时强制触发覆盖率检查
Vitest 默认只在显式启用覆盖率时(如加 --coverage 参数)才计算并校验阈值。CI 中建议固定命令:
vitest run --coverage
```
若本地开发不想每次跑覆盖率,可在 CI 脚本中单独配置该命令,确保上线前强校验。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











