我有一个大型的.NET框架解决方案,希望开始收集代码覆盖率数据,作为构建管道(以及本地开发人员机器)的一部分。
在Coverlet GitHub页面上,它表示支持.NET框架项目,但所有示例都使用dotnet test CLI命令。
是否有可能用封面来做这个,还是我应该看看类似OpenCover的东西?
发布于 2021-03-25 11:15:52
dotnet test --collect:"XPlat Code Coverage"发布于 2020-03-16 15:05:51
备选案文1
Visual Studio TestCode coverage enabled如果这不起作用,请使用Publish code coverage results任务发布由测试任务生成的corbertura文件(默认名称:coverage.cobertura.xml)
选项2
<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:VSTestPublish code coverage results任务发布由MSBuild任务生成的corbertura文件(默认名称:coverage.cobertura.xml)发布于 2021-05-28 13:58:44
我发现所有这些方法都存在问题,使用XAML应用程序构建大型回购程序,以及一些旧的项目格式*.*proj文件。对我有效的解决办法是:
一个特别的问题是设置enableCodeCoverage: true使用MS CoverCoverage.exe,这会阻止在Azure DevOps中查看格式良好的结果。
在yaml中,如下所示:
- 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'https://stackoverflow.com/questions/60651663
复制相似问题