繁体   English   中英

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

[英]view code coverage report on azure devops portal

我正在运行 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'

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

代码覆盖下载链接

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

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

更新:

根据Azure Devops for Sprint 150的发布

发布代码覆盖率报告时,您不再需要指定HTML文件。

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

编辑:


我发现从.Net Framework项目获得覆盖结果以显示代码覆盖率选项卡的技巧与链接文章的思路方式相同。

  1. 不要在Azure中使用VS Test Task运行测试
  2. 直接安装Report GeneratorCoverlet工具
  3. 使用DOTNET-vstest命令通过运行测试
  4. 发布使用Report GeneratorCobertura格式覆盖结果生成的报告


不要使用VS Test Task

运行此任务将允许您使用简单的复选框收集覆盖范围,但您放弃了为代码覆盖率选项卡提供内容的机会

没有VsTest任务



直接安装工具

使用Powershell任务(或类似)直接安装CoverletReport 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

如您所链接的文章中所述, 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" }

如果你正在努力找出引号的转义和使用等命令, 你并不孤单 我使用PSCXechoargs命令行开关的时间比我承认的要多,所以我可以看到实际上为我正在制作的.exe调用提供了什么。



结果!!

......因为那才是最重要的

在此输入图像描述



在此输入图像描述




原答案:


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

文章说,我不确定它的含义或工作原理,

重点是reporttypes:使用HTMLInLine在Azure DevOps页面上启用输出。 Azure DevOps Coverage页面在Web上显示index.html

我理解您可以使用该工具从.xml覆盖率结果创建HTML报告,然后将发布覆盖率结果和报告与Publish Code Coverage任务一起Publish Code Coverage

因此,似乎所有你需要的是有.coverage工具的.xml格式。

我没有直接使用PowerShell,但您可以按照Report Generator文档中的说明编写C#实用程序来访问Coverage.Analysis库。

对于在当前的 .NET(核心)5 中使用 xUnit 测试在 Azure Devops(使用经典编辑器,不带 Yaml)中寻找代码覆盖率的任何人:

  1. 在您的 xUnit 测试项目中,添加以下内容(它通常在 .NET 5 中默认提供,现在 xUnit 模板):

    <PackageReference Include="coverlet.collector" Version="3.0.3" />

    继续检查新版本。

  2. 前往 Azure DevOps,使用经典编辑器创建管道。 执行恢复,构建步骤。 (或者您可以选择 dotnet 核心模板如下): 选择 dotnet 核心管道模板

  3. 在 dotnet core 任务的测试命令中,添加参数 - --collect:"XPlat Code Coverage" 请记住“XPlat 代码覆盖率”是友好名称且区分大小写。 您的测试命令如下所示: 在此处输入图片说明 如果要Publish test results and code coverage请选中此复选框: Publish test results and code coverage ,但不会发布代码覆盖率。 该功能尚未起作用(至少在非 Windows 中不起作用)。

  4. 下一步添加 - Publish code coverage results任务。 选择“代码覆盖工具”作为“Cobertura”,并在“摘要文件”字段中添加$(Agent.TempDirectory)/**/coverage.cobertura.xml 看起来像这样: 管道中的 dotnet 测试任务配置

  5. 保存并排队(在任何代理中,我使用 Ubuntu)并在管道运行完成后查看结果: 流水线运行结果

  6. 覆盖率报告选项卡: 代码覆盖率总结

  7. HTML 覆盖率报告和覆盖率 cobertura xml 作为工件发布: 覆盖率报告

您可以在azure devops管道中使用“发布代码覆盖率结果”任务来查看Jacoco格式的代码覆盖率结果。

有关设置和配置的更多信息,请查看MSDN中的博客

https://docs.microsoft.com/hi-in/azure/devops/pipelines/tasks/test/publish-code-coverage-results?view=tfs-2015#q--a

希望能帮助到你。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM