终端需清晰稳定输出行覆盖率数值并设阈值自动报错:jest 通过 --coverage 显示 lines 百分比,配置 coveragethreshold 可使未达标时非零退出;vitest、nyc 同理;“lines”即语句覆盖率,统计实际执行语句占比。

终端直接显示语句覆盖率达标与否,关键不是“达标”这个判断,而是让工具把行覆盖率(Line Coverage)数值清晰、稳定地输出出来,并设置阈值触发失败提示。
用 Jest 在终端显示行覆盖率数值
Jest 默认运行 jest --coverage 就会在终端末尾输出 summary,其中包含明确的 Lines 行:
- 确保
jest.config.js中启用了覆盖率收集:collectCoverage: true - 无需额外配置 reporter,
--coverage默认启用text-summary输出 - 终端会显示类似:
Lines: 94.2% (134/142)
这个百分比就是语句覆盖率(即每条可执行语句是否被执行过)
让终端自动判定“是否达标”并报错
仅看数字不够自动化。要让终端在未达标时直接退出并提示失败,需设置最小阈值:
将一个或多个视频上传至YouTube。当用户想“上传到YouTube”“发YouTube”“批量上传”“upload to YouTube”“post videos to YouTube”或发布到YouTube时使用此技能。
- 在
jest.config.js中添加:"coverageThreshold": { "global": { "lines": 90 } }
表示全局语句覆盖率不得低于 90% - 运行
jest --coverage后,若实际为 89.7%,终端会高亮报错:
Coverage for lines (89.7%) does not meet global threshold (90%) - 该错误会使进程退出码非 0,适合 CI 流水线拦截
用 Vitest 或 nyc 也能在终端看到行覆盖率
不同工具输出方式略有差异,但都支持终端显式数值:
-
Vitest:运行
vitest run --coverage,默认输出 summary,含 Lines: 92.5% (110/119) -
nyc + Mocha/Jest 等:运行
nyc npm test,结束后终端自动打印汇总,同样带 Lines 行 - 所有工具的“Lines”指标本质一致——统计源文件中被至少执行一次的可执行语句占比
注意:别混淆“行”和“语句”
JS 覆盖率报告中的 “Lines” 实际对应语句覆盖率(Statement Coverage),不是物理行数:
- 空行、注释、函数声明头、
if () {这类语法结构行不计入分母 - 只有真正参与逻辑执行的语句(如赋值、return、函数调用、条件表达式主体等)才算
- 所以 100% Lines 意味着所有可执行语句都被触发过,是语句覆盖达标的直接体现










