更新:
根据 Sprint 150 向 Azure Devops 发布的版本
发布代码覆盖率报告时,不再需要指定 HTML 文件。
因此,我插图中的脚本不再需要直接使用报告生成器工具来创建html报告,并且在发布覆盖结果时,也不需要指定包含这些html报告的目录。
编辑:
我发现从 .Net Framework 项目中获取覆盖结果以显示在 代码覆盖率 选项卡上的技巧与您的 linked article 思路相同。
- 不要在 Azure 中使用 VS 测试任务 运行测试
- 直接安装Report Generator和Coverlet工具
- 使用 dotnet-vstest 命令通过 Coverlet 运行测试
- 发布使用 Report Generator 和 Cobertura 格式覆盖结果生成的报告
不要使用 VS 测试任务
运行此任务将允许您使用一个简单的复选框来收集覆盖率,但随后您将放弃为代码覆盖率选项卡
提供内容的机会
直接安装工具
使用 Powershell 任务(或类似任务)直接安装 Coverlet 和 Report Generator 工具。这允许您在非 .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 的机制。 p>
Coverlet 工具,如您链接的文章中所述,如果您告诉它这样做,它将以 Cobertura 格式输出覆盖结果。
&$coverlet $unitTestFile.FullName --target "dotnet" --targetargs "vstest $($unitTestFile.FullName) --logger:trx" --format "cobertura"
发布结果
完整的脚本示例
注意:此脚本相当粗略,因此请根据您的个人情况将其用作思考练习。
"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 命令行开关的次数比我愿意承认的要多,因此我可以看到实际提供给我正在拨打的.exe 调用的内容。
结果!!
...因为这真的很重要
原答案:
由于您提到的链接文章安装和使用报告生成器全局工具的方式,我认为您仍然可以遵循这些指南来创建 HTML 内联和图表报告类型。
我不确定文章所说的是什么意思或它是如何工作的,
重点是报告类型:使用 HTMLInLine 启用 Azure DevOps 页面上的输出。 Azure DevOps Coverage 页面在网络上显示 index.html。
我了解到您可以使用该工具从 .xml 覆盖结果创建 HTML 报告,然后将覆盖结果和报告与Publish Code Coverage 任务一起发布。
因此,您似乎只需要拥有 .coverage 工具的 .xml 格式。
我没有让它在直接的 powershell 中工作,但您可以按照 Report Generator documentation 的说明编写 C# 实用程序来访问 Coverage.Analysis 库。