首页 > 解决方案 > 如何在 Bamboo for Angular 项目中生成代码覆盖率数据?

问题描述

我正在尝试为我在 Bamboo 中的一个项目填充代码覆盖率。根据 atlassian 文档,我们可以使用 Bamboo 提供的内置 clover 插件来获得代码覆盖率。但不幸的是,它没有显示任何代码覆盖率信息。有人已经为 Angular 项目集成了这个功能吗?

注意:构建是使用默认的 angular-cli 生成的,测试结果是由默认的 Karma 测试运行器和伊斯坦布尔报告器生成的。

标签: angularunit-testingcontinuous-integrationcode-coveragebamboo

解决方案


您的 Angular 项目不会“开箱即用”地提供 Clover 测试结果。相反,您将不得不进行一些项目修改并安装一些额外的包。我通过执行以下操作来完成此操作:

  1. 在 Bamboo 服务器上安装 ChromeHeadless
  2. 修改package.json以包含以下脚本(在脚本下):
"test": "ng test --code-coverage --watch=false --browsers=ChromeHeadless"
  1. run test使用项目目录中的命令创建一个 npm 任务
  2. 修改karma.js以满足您的需求。我不得不修改 outputDir、outputFile,并将记者更改为 junit。我还添加了以下几行:
coverageIstanbulReporter: {
      dir: require('path').join(__dirname, 'coverage'), reports: ['json-summary', 'lcovonly', 'clover'],
      fixWebpackSourcePaths: true
    },
  1. 确保karma-coverage-istanbul-reporterkarma-junit-reporter已安装并存在于 package.json 文件中(链接到 npm 包)。
  2. 在 Bamboo 中添加一个 JUnit Parser 任务,从**/coverage/junit.xml

推荐阅读