You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Jest中仅针对新增代码设置测试覆盖率阈值

PR增量代码测试覆盖率校验方案

针对React + Next.js + Jest技术栈,你可以通过以下步骤实现新增代码覆盖率低于80%自动阻断合并的需求:

  • 安装增量覆盖率计算依赖
    选择jest-coverage-diff作为计算工具,它可以直接读取Jest生成的覆盖率报告,结合Git分支对比结果自动计算新增/修改代码的覆盖率。执行以下命令安装开发依赖:
    npm install jest-coverage-diff --save-dev
    # 用yarn的话执行 yarn add jest-coverage-diff --dev
    # 用pnpm的话执行 pnpm add jest-coverage-diff -D
    
  • 调整Jest配置
    确保你的Jest配置(jest.config.js 或 Next.js 配置文件中内嵌的Jest配置)开启了JSON格式的覆盖率报告输出,示例配置如下:
    module.exports = {
      // 保留你原有所有Jest配置
      coverageReporters: ['json', 'text', 'lcov'],
      collectCoverageFrom: [
        'src/**/*.{js,jsx,ts,tsx}',
        '!src/**/*.d.ts',
        '!src/**/*.config.js',
        // 其他你不需要统计覆盖率的路径可以在这里加排除规则
      ]
    }
    
  • 新增校验脚本
    在项目package.json的scripts字段中新增相关命令:
    {
      "scripts": {
        // 保留原有其他脚本
        "test:coverage": "jest --coverage",
        "check:diff-coverage": "jest-coverage-diff --baseBranch main --threshold 80"
      }
    }
    
    注意把--baseBranch的参数值换成你们团队的主分支名(比如master),--threshold参数对应你要求的80%覆盖率阈值。
  • 绑定PR检查流程
    将上述两个命令加入你们的CI流水线中PR触发的任务里,执行顺序为先跑test:coverage生成覆盖率报告,再跑check:diff-coverage做校验。如果校验不通过,jest-coverage-diff会返回非0的状态码,自动阻断CI流程,对应PR就无法合并。
  • 可选优化项
    如果你觉得全量跑单测速度太慢,可以把单测命令改成只跑修改过的文件,提升CI执行效率:
    "test:coverage": "jest --coverage --changedSince main"
    
    该命令只会对比main分支,跑本次PR修改过的文件对应的单测,适合大项目使用。

内容的提问来源于stack exchange,提问作者Gedrimas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 09:00:03