我有一个用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
测试设置工作正常,并在每个单独的包中生成 html 报告以及 Cobertura 格式的coverage.xml
。在 TFS CI 中,我有一个"发布代码覆盖率结果"生成步骤来发布覆盖率结果,其中包含不同选项的以下值:
- 代码覆盖率工具:
Cobertura
- 摘要文件:
$(System.DefaultWorkingDirectory)packages*coveragecoberturacoverage.xml
- 报告目录:
$(System.DefaultWorkingDirectory)packages*coverage
(用于 HTML 报告)
但是,构建步骤警告以下
找到多个文件或目录匹配项。使用第一个匹配项:C:\MyAgent\path\to\packages\package1\coverage\cobertura\coverage.xml
找到多个文件或目录匹配项。使用第一个匹配项:C:\MyAgent\path\to\packages\package1\coverage
当然,它也只显示一个包的覆盖结果。有没有办法发布所有覆盖率报告,而无需在 CI 中为每个包添加构建步骤?
似乎您正在使用"发布代码覆盖率结果"任务,这与使用"发布测试结果"任务不同。您无法在单个任务中发布多个覆盖率测试结果。
此任务的参数是摘要文件,不像发布测试结果的测试结果文件
文件结构中有两个coverage.xml
文件。因此,它只会使用第一个匹配项,就像消息提到的一样。任务的源代码供您参考。
必须在生成管道中为每个包添加另一个"发布代码覆盖率结果"任务。