使用 TFS 发布多个 cobertura 覆盖范围 CI

Publishing multiple cobertura coverages with TFS CI

我有一个 monorepo 项目,是用 lerna 创建的。而且,我使用 Karma+Jasmine 进行单元测试。项目结构如下:

|-packages
| |-package1
| | |-coverage
| | | |-cobertura
| | | | |-coverage.xml  // here goes the coverage report in cobertura format
| | | |-Browser1
| | | | |-html          // here goes the reports in html (istanbul) for Browser 1
| | | |-Browser2
| | |   |-html          // here goes the reports in html (istanbul) for Browser 2
| | |-src
| | |-tests
| |-package2
| | |-coverage
| | | |-cobertura
| | | | |-coverage.xml
| | | |-Browser1
| | | | |-html        
| | | |-Browser2
| | |   |-html        
| | |-src
| | |-tests
| .
| .
| .
|-karma.conf.js

测试设置工作正常,并在每个单独的包内生成 html 报告以及 Cobertura 格式的 coverage.xml。在 TFS CI 中,我有一个“发布代码覆盖率结果”构建步骤来发布具有以下不同选项值的覆盖率结果:

但是,构建步骤警告如下

Multiple file or directory matches were found. Using the first match: C:\MyAgent\path\to\packages\package1\coverage\cobertura\coverage.xml

Multiple file or directory matches were found. Using the first match: C:\MyAgent\path\to\packages\package1\coverage

当然它也只显示一个包的覆盖率结果。有什么方法可以发布所有覆盖率报告而无需在 CI 中为每个包添加构建步骤?

您似乎在使用 Publish Code Coverage Results 任务,这与使用 Publish test results 任务不同。您无法在单个任务中发布多个覆盖率测试结果。

此任务的参数是摘要文件,不像Publish Test Results

测试结果文件

您的文件结构中有两个 coverage.xml 文件。所以它只会像提到的消息一样使用第一个匹配项。 Source code 的任务供您参考。

您必须在构建管道中为每个包添加另一个发布代码覆盖率结果任务。