我有一个使用 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 中为每个包添加构建步骤?