gpt4 book ai didi

azure - 在 azure devops 门户上查看代码覆盖率报告

转载 作者:行者123 更新时间:2023-12-04 03:03:08 25 4
gpt4 key购买 nike

我正在运行 NUnit 测试(.Net Framework 4.5 中的项目),作为 azure devops 构建管道的一部分。

- task: VSTest@2
inputs:
testAssemblyVer2: 'tests/**/*.Tests.dll'
pathtoCustomTestAdapters: '$(Build.SourcesDirectory)/packages'
codeCoverageEnabled: true
displayName: 'NUnit Testing'

- task: PublishCodeCoverageResults@1
inputs:
codeCoverageTool: JaCoCo
summaryFileLocation: '$(Common.TestResultsDirectory)/**/*.xml'
displayName: 'Publish Code Coverage'
// summaryFileLocation: '$(Common.TestResultsDirectory)/**/*.coverage'

但我看不到覆盖率报告,我只能看到覆盖率结果的下载链接...

code coverage download link

如何将 .coverage 报告转换为 JaCoCo 格式?或者直接以 JaCoCo 格式生成报告?

我已经看到了一些针对 .Net Core ( link ) 的解决方案,但没有看到针对 .Net 框架的解决方案

最佳答案

更新:

根据 Azure DevOps 的发布 Sprint 150

When publishing code coverage reports, you no longer need to specify HTML files.

因此,我插图中的脚本不再需要直接使用报告生成器工具来创建 html 报告,并且在发布覆盖率结果时,也不需要指定包含这些 html 报告的目录。

编辑:

<小时/>

我发现从 .Net Framework 项目获取覆盖率结果以显示在代码覆盖率选项卡上的技巧与您的 linked article 具有相同的思路。 .

  1. 不要使用 Azure 中的 VS 测试任务运行测试
  2. 安装 Report Generator Coverlet 直接工具
  3. 使用dotnet-vstest 通过 Coverlet 运行测试的命令
  4. 发布使用报告生成器Cobertura格式覆盖率结果生成的报告
<小时/><小时/>

不要使用 VS 测试任务

运行此任务将允许您通过一个简单的复选框收集覆盖率,但随后您就放弃了为代码覆盖率选项卡提供内容的机会

no VsTest task

<小时/><小时/>

直接安装工具

使用 Powershell 任务(或类似任务)直接安装 Coverlet报告生成器 工具。这允许您在非 .Net Core 的项目上使用它们。

"install tools:"
&dotnet tool install dotnet-reportgenerator-globaltool --tool-path . --version 4.0.12
&dotnet tool install coverlet.console --tool-path . --version 1.4.1

<小时/><小时/>

通过 coverlet 使用 dotnet vstest

据我了解,dotnet test 与 .Net Framework 项目/程序集配合不佳。但是,我们仍然可以使用 dotnet 命令,我们知道该命令将位于代理计算机上,但我们需要将其用作访问 vstest.console.exe 的机制.

正如您链接的文章中提到的,Coverlet 工具将以 Cobertura 格式输出覆盖结果(如果您告诉它这样做)。

&$coverlet $unitTestFile.FullName --target "dotnet" --targetargs "vstest $($unitTestFile.FullName) --logger:trx" --format "cobertura"
<小时/><小时/>

发布结果

use publish code coverage task

<小时/><小时/>

完整的脚本示例

注意:此脚本非常粗糙,因此请将其用作针对您个人情况的思考练习。

"install tools:"
&dotnet tool install dotnet-reportgenerator-globaltool --tool-path . --version 4.0.12
&dotnet tool install coverlet.console --tool-path . --version 1.4.1

"`nmake reports dir:"
mkdir .\reports

"`nrun tests:"
$unitTestFile = gci -Recurse | ?{ $_.FullName -like "*bin\*UnitTestProject2.dll" }
Write-Host "`$unitTestFile value: $unitTestFile"

$coverlet = "$pwd\coverlet.exe"

"calling $coverlet for $($unitTestFile.FullName)"
&$coverlet $unitTestFile.FullName --target "dotnet" --targetargs "vstest $($unitTestFile.FullName) --logger:trx" --format "cobertura"

"`ngenerate report(s)"
gci -Recurse |
?{ $_.Name -eq "coverage.cobertura.xml" } |
%{ &"$pwd\reportgenerator.exe" "-reports:$($_.FullName)" "-targetdir:reports" "-reporttypes:HTMLInline;HTMLChart" }
<小时/>

如果您正在努力解决使用 Coverlet 命令的引号转义等问题, YOU ARE NOT ALONE 。我使用了 PSCX 中的 echoargs commandlet比我愿意承认的次数更多,这样我就可以看到实际提供给我正在进行的 .exe 调用的内容。

<小时/><小时/>

结果!!

...因为这才是真正重要的

enter image description here

<小时/><小时/>

enter image description here

<小时/><小时/><小时/>

原始答案:

<小时/>

由于您提到的链接文章安装和使用报告生成器全局工具的方式,我认为您仍然可以遵循这些指南来创建 HTML 内联和图表报告类型。

我不确定文章中所说的意思或它是如何工作的,

The point is the reporttypes: Use HTMLInLine for enabling the output on the Azure DevOps page. Azure DevOps Coverage page show index.html on the web.

据我了解,您可以使用该工具根据 .xml 覆盖率结果创建 HTML 报告,然后将覆盖率结果和报告与发布代码覆盖率 任务。

看来您所需要的只是 .coverage 工具的 .xml 格式。

我没有让它在直接的 powershell 中工作,但你可以按照Report Generator documentation中的说明进行操作。编写 C# 实用程序来访问 Coverage.Analysis 库。

关于azure - 在 azure devops 门户上查看代码覆盖率报告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54627918/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com