Javascript 使用TFS CI发布多个cobertura覆盖范围
我有一个monorepo项目,由lerna创建。我使用Karma+Jasmine进行单元测试。项目结构如下所示:Javascript 使用TFS CI发布多个cobertura覆盖范围,javascript,tfs,cobertura,istanbul,monorepo,Javascript,Tfs,Cobertura,Istanbul,Monorepo,我有一个monorepo项目,由lerna创建。我使用Karma+Jasmine进行单元测试。项目结构如下所示: |-packages | |-package1 | | |-coverage | | | |-cobertura | | | | |-coverage.xml // here goes the coverage report in cobertura format | | | |-Browser1 | | | | |-html // here goes the r
|-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\*\coverage\cobertura\coverage.xml
- 报告目录:
(用于HTML报告)$(System.DefaultWorkingDirectory)\packages\*\coverage
coverage.xml
文件。所以它将只使用第一个匹配项,正如消息中提到的。该任务的一部分,供您参考
您必须在构建管道中为每个包添加另一个发布代码覆盖率结果任务。您证实了我的担心。然而,在我的monorepo中有相当多的项目。为这些包中的每一个添加任务肯定会增加现有包和未来新包的开销。但是,如果没有其他方法,那么我想我最终会采用这种方法。@PatrickLu MSFT,即使我想使用两个coverage.xml文件显示代码覆盖率结果,我甚至使用了两个“发布代码覆盖率结果”任务,但TFS 2017构建定义仅显示上一个任务的代码覆盖率。是否有其他方法可以使用两个覆盖率文件显示代码覆盖率?@SRP您可以使用**/coverage.cobertura.xml作为summaryFileLocation参数。然后PublishCodeCoverageResults@1任务将从所有测试项目创建摘要html报告。悬停仍然有一个结果发布到devops statistics,但报告包含所有文件的结果。@djsowa,我们可以使用TFS Marketplace中的报告生成器任务显示多个cobertura.xml的代码覆盖率结果。此任务将所有cobertura.xml文件转换为单个cobertura.xml,然后我们可以在发布代码覆盖率结果中使用此文件来显示我们的codecoverage。