我们为Angular 2代码库提供了Jenkins构建,它以类似于我们的Java项目的测试和覆盖报告的方式报告测试和代码覆盖率信息 . 我们使用Karma使用以下 karma.conf.js 生成Cobertura兼容的覆盖数据:

coverageReporter: {
  dir: 'coverage/',
  reporters: [{
    type: 'html',
    dir: 'coverage'
  }, {
    type: 'lcovonly',
    subdir: 'report-lcov'
  }, {
    type: 'text-summary'
  },
  // this is the important part:
  { type: 'cobertura', subdir: '.', file: 'cobertura.xml' }
  ]
}

我们使用Jenkins的 Publish Cobertura Coverage Report 插件并将其指向 cobertura.xml 文件 .

我们看到的问题是我们的实际覆盖率似乎比我们的Jenkins UI中报告的要少得多 . 我相信这是因为Jenkins的覆盖类别是“包”,“文件”,“类”,“方法”,“行”和“条件”,而来自Karma的类别是“语句”,“分支”, “功能”,“线条” . 似乎排队的这两个类别中只有两个是“线”,这是唯一一个报告覆盖率不是100%的类别 .

有没有办法从Karma覆盖率报告中正确翻译类别并将其显示在Jenkins中?还需要任何解决方案来显示构建摘要页面上的覆盖历史记录图 .

一些截图:

我们的一些 npm test 命令:

npm test output

Jenkins构建摘要页面:

jenkins build screen

詹金斯报道详情屏幕:

jenkins coverage details screen