har*_*shr 9 azure asp.net-4.5 nunit-3.0 azure-devops azure-pipelines
作为azure devops构建管道的一部分,我正在运行NUnit测试(.Net Framework 4.5中的项目)。
- 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'
Run Code Online (Sandbox Code Playgroud)
但是我看不到覆盖率报告,只看到覆盖率结果的下载链接...
如何将.coverage报告转换为JaCoCo格式?或直接以JaCoCo格式生成报告?
我已经看到了一些针对.Net Core(链接)的解决方案,但是没有针对.Net框架的解决方案
Jos*_*ust 17
按照适用于Sprint 150的 Azure Devops的发行版
发布代码覆盖率报告时,您不再需要指定HTML文件。
因此,我的插图中的脚本不再需要直接使用报告生成器工具来创建html报告,并且在发布coverage结果时,无需指定包含这些html报告的目录。
我发现从.Net Framework项目中获取覆盖率结果以显示在“ 代码覆盖率”选项卡上的窍门与链接文章的思路相同。
运行此任务将使您可以通过一个简单的复选框来收集覆盖率,但随后您将有机会为“ 代码覆盖率”选项卡提供内容
使用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
Run Code Online (Sandbox Code Playgroud)
我的理解对.Net Framework项目/程序集dotnet test不起作用。但是,我们仍然可以使用该命令,该命令将在代理计算机上,但是我们需要将其用作获取vstest.console.exe的机制。dotnet
如您所链接的文章中所述,Coverlet工具会告诉您,它会以Cobertura格式输出coverage结果。
&$coverlet $unitTestFile.FullName --target "dotnet" --targetargs "vstest $($unitTestFile.FullName) --logger:trx" --format "cobertura"
Run Code Online (Sandbox Code Playgroud)
注意:该脚本非常粗糙,因此可以将其用作针对个人情况的思想练习。
"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" }
Run Code Online (Sandbox Code Playgroud)
如果您想用Coverlet命令找出引号的转义内容,那么您就不会孤单了。我用的是echoargs从命令行PSCX更多的时间比我愿意承认,所以我可以看到什么是真正去提供给.exe我打电话。
...因为那真的很重要
由于您提到的链接文章的安装和使用报告生成器全局工具的方式,我认为您仍然可以遵循这些准则来创建HTML内联和图表报告类型。
我不确定这篇文章说的是什么意思或如何工作,
关键是报告类型:使用HTMLInLine启用Azure DevOps页面上的输出。Azure DevOps覆盖率页面在Web 上显示index.html。
我了解您可以使用该工具根据.xml覆盖率结果创建HTML报告,然后发布覆盖率结果并与Publish Code Coverage任务一起报告。
因此,似乎您所需要的只是.coverage工具的.xml格式。
我没有使其直接在Powershell中工作,但是您可以按照报表生成器文档中的说明编写C#实用程序来访问该Coverage.Analysis库。
| 归档时间: |
|
| 查看次数: |
2625 次 |
| 最近记录: |