4

我有一个使用 lerna 创建的 monorepo 项目。而且,我使用 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

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

  • 代码覆盖工具:Cobertura
  • 摘要文件:$(System.DefaultWorkingDirectory)\packages\*\coverage\cobertura\coverage.xml
  • 报告目录:($(System.DefaultWorkingDirectory)\packages\*\coverage用于 HTML 报告)

但是,构建步骤会警告以下内容

找到多个文件或目录匹配项。使用第一个匹配项:C:\MyAgent\path\to\packages\package1\coverage\cobertura\coverage.xml

找到多个文件或目录匹配项。使用第一个匹配项:C:\MyAgent\path\to\packages\package1\coverage

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

4

1 回答 1

3

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

此任务的参数是摘要文件,不像 发布测试结果测试结果文件

您的文件结构中有两个coverage.xml文件。所以它只会使用第一个匹配,就像消息提到的那样。任务源代码供大家参考。

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

于 2018-03-21T16:22:47.997 回答