首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用ReportGenerator生成代码覆盖率报告

无法使用ReportGenerator生成代码覆盖率报告
EN

Stack Overflow用户
提问于 2020-02-04 13:55:26
回答 1查看 6.6K关注 0票数 1

我在Azure DevOps中为我的ASP.NET MVC应用程序创建了一个构建管道。存在用于单元测试的项目,我需要生成代码覆盖率报告,我已经使用了coverlet.msbuild NuGet包和"ReportGenerator“。

以下是其中一个单元测试项目的packages.config文件:

代码语言:javascript
复制
<packages>
  <package id="coverlet.msbuild" version="2.8.0" targetFramework="net461" developmentDependency="true" />
  <package id="NUnit" version="2.6.3" targetFramework="net45" />
  <package id="ReportGenerator" version="4.4.6" targetFramework="net461" />
</packages>

此外,请在生成管道中查找生成解决方案、测试程序集和ReportGenerator任务的yaml:

构建解决方案:

代码语言:javascript
复制
steps:
- task: VSBuild@1
  displayName: 'Build solution **\SmartStoreNET.sln'
  inputs:
    solution: '**\SmartStoreNET.sln'
    msbuildArgs: '/p:CollectCoverage=true /p:CoverletOutputFormat=cobertura'

测试程序集

代码语言:javascript
复制
steps:
- task: VSTest@2
  displayName: 'Test Assemblies'
  inputs:
    testAssemblyVer2: |
     **\$(BuildConfiguration)\*test*.dll
     !**\obj\**
    codeCoverageEnabled: true
    platform: '$(BuildPlatform)'
    configuration: '$(BuildConfiguration)'

ReportGenerator

代码语言:javascript
复制
steps:
- task: Palmmedia.reportgenerator.reportgenerator-build-release-task.reportgenerator@4
  displayName: ReportGenerator
  inputs:
    reports: '$(Build.SourcesDirectory)/tests/**/coverage.cobertura.xml'
    targetdir: '$(Build.SourcesDirectory)/CodeCoverage'
    reporttypes: 'HtmlInline_AzurePipelines;Cobertura;Badges'

在执行管道时,我在ReportGenerator任务中得到以下错误:

报表文件模式‘d:\a\1\s/test/**/coverage.cobertura.xml’无效。没有找到匹配的文件。

有谁能建议这里缺少什么,或者什么可能是潜在的问题。

如果能在这方面提供任何帮助,我将不胜感激。

谢谢,

尼尔曼

EN

回答 1

Stack Overflow用户

发布于 2020-02-05 11:37:13

无法使用ReportGenerator生成代码覆盖率报告

AFAIK、属性/p:CollectCoverage=true/p:CoverletOutputFormat=cobertura用于测试任务,以生成覆盖结果,而不是生成任务。

但是使用Visual测试任务运行覆盖率存在一个问题,因此我们不能直接将上面的属性用于VS测试任务。

作为解决办法,您可以尝试在管道期间安装该工具,然后使用powershell脚本生成报告:

代码语言:javascript
复制
dotnet tool install dotnet-reportgenerator --tool-path . --version 4.0.12
dotnet tool install coverlet.console --tool-path . --version 1.4.1
mkdir .\reports
$unitTestFile = gci -Recurse | ?{ $_.FullName -like "*bin\*test*.dll" }
$coverlet = "$pwd\coverlet.exe"
& $coverlet $unitTestFile.FullName --target "dotnet" --targetargs "vstest $($unitTestFile.FullName) --logger:trx" --format "cobertura"
gci -Recurse |
?{ $_.Name -eq "coverage.cobertura.xml"} |
%{ &"$pwd\reportgenerator.exe" "-reports:$($_.FullName)" "-targetdir:reports" "-reportstypes:HTMLInline;HTMLChart" }

有关更多细节,请查看这条线文件

希望这能有所帮助。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60058931

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档