dotcover 将覆盖率结果打印到 cmd 行
dotcover print coverage results to cmd line
有没有办法让 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)%"
不知道有没有办法直接用cover选项做
不过我会这样做的方法是删除 --reportType 标志。这将创建一个快照 (.dcvr),然后您可以使用“dotcover 报告”创建 HTML 和 JSON 报告。我没有使用过 gitlab,所以我不知道这是否会干扰您的归档过程。
我在 Jenkins 中执行此操作,因为我还没有找到允许我发布报告和执行阈值的 dotcover 插件。我生成了一个我发布的 HTML 报告和一个 DetailedXML,我用它在 Powershell 中使用 if 语句设置阈值。
有没有办法让 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)%"
不知道有没有办法直接用cover选项做
不过我会这样做的方法是删除 --reportType 标志。这将创建一个快照 (.dcvr),然后您可以使用“dotcover 报告”创建 HTML 和 JSON 报告。我没有使用过 gitlab,所以我不知道这是否会干扰您的归档过程。
我在 Jenkins 中执行此操作,因为我还没有找到允许我发布报告和执行阈值的 dotcover 插件。我生成了一个我发布的 HTML 报告和一个 DetailedXML,我用它在 Powershell 中使用 if 语句设置阈值。