首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在.NET框架项目中,可以使用Coverlet获取代码覆盖率数据吗?

在.NET框架项目中,可以使用Coverlet获取代码覆盖率数据吗?
EN

Stack Overflow用户
提问于 2020-03-12 10:02:27
回答 3查看 6.4K关注 0票数 10

我有一个大型的.NET框架解决方案,希望开始收集代码覆盖率数据,作为构建管道(以及本地开发人员机器)的一部分。

在Coverlet GitHub页面上,它表示支持.NET框架项目,但所有示例都使用dotnet test CLI命令。

是否有可能用封面来做这个,还是我应该看看类似OpenCover的东西?

EN

回答 3

Stack Overflow用户

发布于 2021-03-25 11:15:52

  1. 安装Coverlet.MSbuild
  2. 安装Coverlet.Collector
  3. 重建工程
  4. 单击Tools > Nuget Package Manager > Package Manager控制台
  5. 运行dotnet test --collect:"XPlat Code Coverage"
  6. 在文件夹“coverage.cobertura.xml”中找到所需的TestResults文件
  7. (可选)如果希望图形界面读取文件并以更方便的方式显示结果,请在AzureDevops中部署解决方案
票数 3
EN

Stack Overflow用户

发布于 2020-03-16 15:05:51

备选案文1

如果这不起作用,请使用Publish code coverage results任务发布由测试任务生成的corbertura文件(默认名称:coverage.cobertura.xml)

选项2

  • 将以下NuGet包添加到测试项目中
    • coverlet.msbuild
    • Microsoft.NET.Test.Sdk
    • Microsoft.TestPlatform
    • Microsoft.TestPlatform.Build

  • 将属性组添加到测试项目文件(.csproj)中
代码语言:javascript
复制
<PropertyGroup>
    <VSTestTaskAssemblyFile>$(MSBuildThisFileDirectory)\..\packages\Microsoft.TestPlatform.Build.16.6.1\lib\netstandard2.0\Microsoft.TestPlatform.Build.dll</VSTestTaskAssemblyFile>
    <VSTestConsolePath>$(MSBuildThisFileDirectory)..\packages\Microsoft.TestPlatform.Portable.16.6.1\tools\netcoreapp2.1\vstest.console.dll</VSTestConsolePath>
    <CoverletOutputFormat>cobertura</CoverletOutputFormat>
</PropertyGroup>
  • 使用MSBuild任务 -使用以下命令行args: <your-project>.csproj /p:CollectCoverage=true /t:VSTest
  • 使用Publish code coverage results任务发布由MSBuild任务生成的corbertura文件(默认名称:coverage.cobertura.xml)
票数 1
EN

Stack Overflow用户

发布于 2021-05-28 13:58:44

我发现所有这些方法都存在问题,使用XAML应用程序构建大型回购程序,以及一些旧的项目格式*.*proj文件。对我有效的解决办法是:

  • 用MSBuild构建解决方案
  • 从coverlet.collector下载NuGet
  • 使用指定为适配器的覆盖物运行dotnet测试,并且--不生成
  • 使用ReportGenerator扩展来组合覆盖率报告
  • 发布代码覆盖率结果

一个特别的问题是设置enableCodeCoverage: true使用MS CoverCoverage.exe,这会阻止在Azure DevOps中查看格式良好的结果。

在yaml中,如下所示:

代码语言:javascript
复制
- task: NuGetCommand@2
  displayName: Restore NuGet Packages
  inputs:
    command: 'restore'
    restoreSolution: Path/To/My.sln
    feedsToUse: 'select'
    vstsFeed: 'MyCompany/PrivateFeed'
    includeNuGetOrg: true

- task: MSBuild@1
  displayName: 'Build'
  inputs:
    solution: Path/To/My.sln
    msbuildArchitecture: 'x64'
    configuration: Release
    msbuildArguments: /p:DebugSymbols=true /p:DebugType=portable -m

- task: NuGetCommand@2
  displayName: 'Restore Coverlet Adapter'
  inputs:
    command: custom
    restoreDirectory: .\
    arguments: 'install coverlet.collector -Version 3.0.3 -ExcludeVersion'

- task: DotNetCoreCLI@2
  inputs:
    command: test
    arguments: Path/To/My.sln --no-build -a $(Build.SourcesDirectory)\coverlet.collector\build\netstandard1.0 --collect:"XPlat Code Coverage"

- task: reportgenerator@4
  inputs:
    reports: $(Pipeline.Workspace)\**\coverage.cobertura.xml
    targetdir: 'coveragereport'
    reporttypes: 'HtmlInline_AzurePipelines;Cobertura'

- task: PublishCodeCoverageResults@1
  inputs:
    codeCoverageTool: 'Cobertura'
    summaryFileLocation: 'coveragereport/cobertura.xml'
    reportDirectory: 'CoverageReport'
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60651663

复制
相关文章

相似问题

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