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

如何在GitHub Actions中检查单元测试覆盖率是否达65%要求

Jest 覆盖率校验 + GitHub Actions 配置方案

1. 配置65%覆盖率阈值校验

直接用Jest原生的覆盖率阈值能力就行,不用额外写判断脚本,两种配置方式选一个即可:

  • 方式一:改项目内Jest配置(推荐,长期维护方便)
    在package.json的jest配置段,或者独立的jest.config.js里添加coverageThreshold规则,四个核心覆盖率维度统一设为65即可:
    // package.json 示例
    {
      "scripts": {
        "jest-coverage": "jest --coverage"
      },
      "jest": {
        "coverageThreshold": {
          "global": {
            "branches": 65,
            "functions": 65,
            "lines": 65,
            "statements": 65
          }
        }
      }
    }
    
  • 方式二:直接写在npm脚本里,不用单独改Jest配置
    把package.json里的jest-coverage脚本改成带参数的形式:
    {
      "scripts": {
        "jest-coverage": "jest --coverage --coverageThreshold='{\"global\":{\"branches\":65,\"functions\":65,\"lines\":65,\"statements\":65}}'"
      }
    }
    

如果需要对个别特殊文件放宽阈值,也可以在coverageThreshold里单独加路径规则,全局65%的要求按上面配置就够。

2. 覆盖率不达标时自动阻断流程

不需要额外加配置:Jest检测到任意一项覆盖率低于设定阈值时,会直接以非0状态码退出进程。GitHub Actions的默认执行逻辑就是「任意步骤返回非0退出码,直接标记当前Job失败,终止后续所有步骤执行」。
也就是说只要按上面的方式配好阈值,跑npm run jest-coverage的时候如果覆盖率没到65%,这一步直接飘红报错,后面的构建、部署步骤全不会跑,天然满足阻断要求。报错时终端还会明确打印哪一项覆盖率差了多少,方便定位问题。

3. 配置推送代码自动触发工作流

在workflow的YAML文件最顶层添加on触发规则即可,如果要监听所有分支的push提交,直接写:

on: push

如果只需要监听特定分支(比如main、develop)的推送,就细化分支配置:

on:
  push:
    branches: [ main, develop ]

完整可用配置参考

你原来的配置漏了代码拉取、依赖安装步骤,直接跑会报错,完整可用的片段如下:

name: CI/CD Pipeline
on: push # 所有push事件自动触发

jobs:
  build:
    name: Test & Build
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository code
        uses: actions/checkout@v4

      - name: Install node dependencies
        run: npm ci

      - name: Run unit test and check coverage
        run: npm run jest-coverage
        # 这步不通过,后面所有步骤都不会执行

      - name: Build production bundle
        run: npm run build

      # 后续部署步骤正常加在后面即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 02:18:20