【问题标题】:dotcover print coverage results to cmd linedotcover 将覆盖结果打印到 cmd 行
【发布时间】:2020-11-16 21:54:23
【问题描述】:

有没有办法让 dotcover 将覆盖结果的摘要打印到命令行?

我试图让我的 gitlab 管道将覆盖结果输出到控制台,以便它们可以被我在管道设置中指定的正则表达式拾取。当我运行 dotcover 命令时,我只能让它生成报告,而不能将任何内容打印到控制台。我找不到任何关于将结果打印到控制台的in the docs

dotcover cover 
    --targetExecutable="nunit3-console.exe" 
    --targetArguments="..." 
    --output=report.html 
    --reportType=HTML

以上内容正确生成了报告,但唯一的覆盖率输出不包括有关覆盖率的任何详细信息。我希望有像 Coverage Summary: 89% 这样的东西我可以退出。

[JetBrains dotCover] Coverage session finished [7/27/2020 10:24:09 AM]
[JetBrains dotCover] Coverage results post-processing started [7/27/2020 10:24:09 AM]
[JetBrains dotCover] Report generation started [7/27/2020 10:24:09 AM]
[JetBrains dotCover] Report generation finished [7/27/2020 10:24:10 AM]
[JetBrains dotCover] Coverage results post-processing finished [7/27/2020 10:24:10 AM]

我意识到我可以使用 --output=report.json --reportType=JSON 而不是 HTML,然后读取文件以从第一个 CoveragePercent 属性中获取摘要,但是我不再能够将 HTML 报告另存为工件。

编辑 - 这是我根据 KaiserBones 的回答解决这个问题的方法

# first run the tests with coverage, generating a snapshot
dotcover cover 
    --targetExecutable="nunit3-console.exe" 
    --targetArguments="..." 
    --output="coverage-results.snapshot"

# then, generate the JSON report 
dotcover report --Source="results.snapshot" --Output="coverage-results.json" --ReportType="JSON"

# then, generate the HTML report (a nice way of examining results manually)
dotcover report --Source="results.snapshot" --Output="coverage-results.html" --ReportType="HTML"

# Read the JSON file (my runners are on windows, so I'm using powershell)
$coverageJson = (Get-Content "coverage-results.json" -Raw) | ConvertFrom-Json

# Print the top level coverage result
Write-Host "Statements: $($coverageJson.CoveragePercent)%"

【问题讨论】:

    标签: .net code-coverage gitlab-ci nunit-console dotcover


    【解决方案1】:

    不知道有没有办法直接用cover选项来做。

    我会这样做的方法是删除 --reportType 标志。这将创建一个快照 (.dcvr),然后您可以使用“dotcover report”创建 HTML 和 JSON 报告。我没有使用过 gitlab,所以我不知道这是否会干扰您的归档过程。

    我在 Jenkins 中执行此操作,因为我还没有找到允许我发布报告和强制阈值的 dotcover 插件。我生成了一个我发布的 HTML 报告和一个用于在 Powershell 中使用 if 语句设置阈值的DetailedXML。

    【讨论】:

    • 这就是我最终的结果。它具有生成 HTML 和 JSON 报告的额外好处,我将这两个报告都保存为工件,这样我就可以显示一些不错的数据以及解析 JSON 以进行更多自定义处理。
    猜你喜欢
    • 2017-12-29
    • 2017-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-23
    • 2021-07-29
    • 1970-01-01
    相关资源
    最近更新 更多