【问题标题】:Publishing multiple cobertura coverages with TFS CI使用 TFS CI 发布多个 cobertura 覆盖
【发布时间】:2018-03-20 09:26:20
【问题描述】:

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

【问题讨论】:

    标签: javascript tfs cobertura istanbul monorepo


    【解决方案1】:

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

    这个任务的参数是Summary File,不像Publish Test ResultsTest results files

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

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

    【讨论】:

    • 你证实了我的恐惧。但是,在我的 monorepo 中有很多项目。为这些包中的每一个添加一个任务肯定会增加现有包和未来新包的开销。但是,如果没有其他办法,那我想我最终还是会这样做。
    • @PatrickLu-MSFT,即使我想使用两个 coverage.xml 文件显示代码覆盖率结果,我什至使用了两个发布代码覆盖率结果任务,但 TFS 2017 构建定义显示了最后一个任务的代码覆盖率只要。有没有其他方法可以使用两个覆盖文件来显示代码覆盖率?
    • @SRP 您可以使用 **/coverage.cobertura.xml 作为 summaryFileLocation 参数。然后 PublishCodeCoverageResults@1 任务将从所有测试项目创建摘要 html 报告。悬停仍然有一个结果发布到 devops 统计信息,但报告包含来自所有文件的结果。
    • @djsowa,我们可以使用 TFS Marketplace marketplace.visualstudio.com/… 中存在的报告生成器任务来显示多个 cobertura.xml 的代码覆盖率结果。此任务将所有 cobertura.xml 文件转换为单个 cobertura.xml,然后我们可以在 Publish Code Coverage Results 中使用此文件来显示我们的代码覆盖率。
    猜你喜欢
    • 1970-01-01
    • 2022-06-11
    • 1970-01-01
    • 2021-06-23
    • 1970-01-01
    • 2018-03-27
    • 2023-03-25
    • 1970-01-01
    相关资源
    最近更新 更多