Angular 9项目使用Jest能否实现差异覆盖率统计?
Angular 9 + Jest 实现Azure DevOps差异覆盖率方案
完全可以实现和后端一致的PR差异覆盖率校验、自动评论功能,操作步骤如下:
步骤1:调整Jest配置输出Cobertura格式报告
Azure DevOps的覆盖率功能原生支持Cobertura格式,首先修改你项目中的Jest配置文件(通常为根目录的jest.config.js,或者angular.json中test配置项下的覆盖率配置),添加Cobertura输出规则:
module.exports = { // 保留你原有所有Jest配置 collectCoverage: true, coverageReporters: [ "text-summary", "html", "cobertura" // 新增这一项,输出Azure可识别的cobertura格式报告 ], // 可按项目需求调整覆盖率统计范围 collectCoverageFrom: [ "src/**/*.ts", "!src/**/*.module.ts", "!src/**/*.d.ts", "!src/environments/*" ] };
步骤2:修改azure-pipeline.yml添加前端测试任务
在你现有的流水线配置中,新增前端测试执行和覆盖率上报的任务,放在依赖安装步骤之后即可:
# 安装对应Node版本,可根据你项目实际兼容版本调整 - task: NodeTool@0 inputs: versionSpec: '12.x' displayName: 'Install compatible Node.js version for Angular 9' # 执行测试生成覆盖率报告 - script: | npm install npm run test -- --no-watch --no-progress --browsers=ChromeHeadlessCI displayName: 'Run Jest tests and generate coverage report' # 上报覆盖率报告到Azure DevOps - task: PublishCodeCoverageResults@1 inputs: codeCoverageTool: 'Cobertura' # 路径和你Jest输出的cobertura文件路径保持一致即可 summaryFileLocation: '**/coverage/cobertura-coverage.xml' displayName: 'Publish frontend coverage report'
步骤3:差异覆盖率配置复用后端规则
你已经添加的azurepipelines-coverage.yml配置对前后端覆盖率是全局生效的,无需额外修改即可生效:PR提交后会自动统计所有变更代码的差异覆盖率,达标60%才会通过校验,同时自动评论每个变更文件的覆盖详情。
如果需要单独给前端设置差异覆盖率阈值,可以调整配置如下:
coverage: status: comments: on diff: target: 60% # 全局阈值 targets: # 保留后端原有阈值 backend: target: 60% paths: - '**/*.cs' # 单独配置前端阈值 frontend: target: 60% # 可自行调整数值 paths: - '**/*.ts' - '**/*.js' - '**/*.tsx'
内容的提问来源于stack exchange,提问作者avdeveloper
相关产品推荐
相关产品推荐

