【问题标题】:Cannot generate HTML coverage report using Reportgenerator无法使用 Reportgenerator 生成 HTML 覆盖率报告
【发布时间】:2021-07-15 04:31:47
【问题描述】:

我有一个带有一些单元测试的 .net 核心项目。我想得到它的报道。所以,我是按照下面官方MS documentation的步骤来的

一切都很顺利,直到我需要运行以下代码来生成 HTML 报告的最后一步:

reportgenerator
-reports:"Path\To\TestProject\TestResults\{guid}\coverage.cobertura.xml"
-targetdir:"coveragereport"
-reporttypes:Html

我得到的错误是:

生成xml时的输出如下:

所以,我对如何生成最终的 HTML 报告有点迷茫。有人可以帮忙吗?

顺便说一句,您可能会看到我正在使用 zsh 从 Mac 上尝试它。所以,不确定这是否会影响。

【问题讨论】:

    标签: unit-testing .net-core nunit code-coverage xunit


    【解决方案1】:

    从控制台中的错误来看,您指定的文件路径可能不正确。我相信使用coverlet时,文件每次都会在随机GUID文件夹下生成。

    在第一个屏幕截图中,可见路径如下所示:UnitTests/TestResults/{SomeGuid}/coverage.cobertura.xml

    但在第二个屏幕截图中,文件路径在生成报告时显示 .UnitTest/coverage.cobertura.xml。我相信生成报告的路径应该是您的报告命令的输入

    我已在我的 azure devops 管道中集成了报告生成器,由于我们无法确定 GUID,我使用以下命令在根文件夹中查找所有匹配文件

    reports: '$(Build.SourcesDirectory)/**/*cobertura.xml'
    targetdir: '$(System.DefaultWorkingDirectory)/CoverageResults'
    

    这样它会在我的源目录中查找所有以 cobertura.xml 结尾的文件,而不用担心确切的路径。

    【讨论】:

      【解决方案2】:

      经过几个小时试图找出问题所在,我终于找到了。这可能看起来像一个愚蠢的解决方案,但天哪,我希望官方文档提到一些与之相关的内容。

      解决方案是将所有代码放在一行中,

      原始代码(来自官方文档):

      reportgenerator
      -reports:"Path\To\TestProject\TestResults\{guid}\coverage.cobertura.xml"
      -targetdir:"coveragereport"
      -reporttypes:Html
      

      固定:

       reportgenerator -reports:"Path\To\TestProject\TestResults\{guid}\coverage.cobertura.xml" -targetdir:"coveragereport" -reporttypes:Html
      

      不确定我的终端中的设置是否可以在这里发挥作用,但将所有代码放在一行中会起作用。

      【讨论】:

        猜你喜欢
        • 2020-05-20
        • 2017-03-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-09-09
        相关资源
        最近更新 更多