Asp.net core 代码覆盖率选项卡未在Azure DevOps中显示报告
我有一个.NET Core 2.2 web应用程序的构建管道,该应用程序有一个运行测试的.NET Core任务。然而,在运行我的管道并检查代码覆盖率选项卡之后,我得到了下面的消息Asp.net core 代码覆盖率选项卡未在Azure DevOps中显示报告,asp.net-core,azure-devops,Asp.net Core,Azure Devops,我有一个.NET Core 2.2 web应用程序的构建管道,该应用程序有一个运行测试的.NET Core任务。然而,在运行我的管道并检查代码覆盖率选项卡之后,我得到了下面的消息 是否缺少我忘记执行或设置的任何操作?您需要进行以下设置: --configuration$(BuildConfiguration)--collect:“XPlat代码覆盖率”您需要安装coverlet.collectornuget包 然后安装报告生成器:install--tool path。dotnet rep
是否缺少我忘记执行或设置的任何操作?您需要进行以下设置:
--configuration$(BuildConfiguration)--collect:“XPlat代码覆盖率”
您需要安装coverlet.collector
nuget包
然后安装报告生成器:install--tool path。dotnet reportgenerator globaltool
运行报表生成器:/reportgenerator-reports:$(Agent.TempDirectory)/**/coverage.cobertura.xml-targetdir:$(Build.SourcesDirectory)/coverlet/reports-reporttypes:“cobertura”
并发布代码覆盖率以获得以下信息:
您可以尝试以下步骤来发布代码覆盖率 1,首先需要确保项目引用指向nuget package coverlet.msbuild
<PackageReference Include="coverlet.msbuild" Version="2.5.1">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>
3,然后在dotnet测试任务中,通过添加以下参数来启用CollectCoverage:
arguments: '/p:CollectCoverage=true /p:CoverletOutput=$(Build.SourcesDirectory)\TestResult\ /p:CoverletOutputFormat=cobertura'
4,并将任务安装到您的组织,然后在reportgenerator任务中指定CoverletOutput文件夹reports:$(Build.SourcesDirectory)\TestResult\**\coverage.cobertura.xml
,如上述dotnet测试任务/p:CoverletOutput=$(Build.SourcesDirectory)\TestResult\
中所述
请参阅以下yaml格式的完整示例:
steps:
- task: UseDotNet@2
inputs:
version: 2.2.x
- task: DotNetCoreCLI@2
inputs:
command: restore
projects: '**\*.csproj'
- task: DotNetCoreCLI@2
inputs:
command: custom
custom: tool
arguments: install --tool-path . dotnet-reportgenerator-globaltool
displayName: Install ReportGenerator tool
- task: DotNetCoreCLI@2
displayName: Test .NET
inputs:
command: test
projects: '**\*Test*.csproj'
publishTestResults: false
arguments: '--configuration $(buildConfiguration) /p:CollectCoverage=true /p:CoverletOutput=$(Build.SourcesDirectory)\TestResult\ /p:CoverletOutputFormat=cobertura'
condition: succeededOrFailed()
- task: reportgenerator@4
inputs:
reports: '$(Build.SourcesDirectory)\TestResult\**\coverage.cobertura.xml'
targetdir: '$(Build.SourcesDirectory)\coverlet\reports'
verbosity: 'Verbose'
condition: succeededOrFailed()
- task: PublishCodeCoverageResults@1
displayName: 'Publish code coverage'
inputs:
codeCoverageTool: Cobertura
summaryFileLocation: $(Build.SourcesDirectory)\coverlet\reports\Cobertura.xml
failIfCoverageEmpty: false
reportDirectory: $(Build.SourcesDirectory)\coverlet\reports\
condition: succeededOrFailed()
嗨,Krzysztof,我做了上面提到的所有事情,但是我在发布代码覆盖率任务中遇到了这个问题:没有找到要发布的代码覆盖率结果。是我测试它的示例项目。它在Linux和Windows host agent上工作。你可以用这个试试。你也可以像我那样分享你的配置,这样我也许可以帮助你。这个解决方案似乎不适用于我的项目,因为Xplat代码覆盖率只支持.NET Core 2.2.3及以上版本。你为什么这样认为?你能一个接一个地告诉我们你的步骤吗。我相信我们能解决这个问题。
steps:
- task: UseDotNet@2
inputs:
version: 2.2.x
- task: DotNetCoreCLI@2
inputs:
command: restore
projects: '**\*.csproj'
- task: DotNetCoreCLI@2
inputs:
command: custom
custom: tool
arguments: install --tool-path . dotnet-reportgenerator-globaltool
displayName: Install ReportGenerator tool
- task: DotNetCoreCLI@2
displayName: Test .NET
inputs:
command: test
projects: '**\*Test*.csproj'
publishTestResults: false
arguments: '--configuration $(buildConfiguration) /p:CollectCoverage=true /p:CoverletOutput=$(Build.SourcesDirectory)\TestResult\ /p:CoverletOutputFormat=cobertura'
condition: succeededOrFailed()
- task: reportgenerator@4
inputs:
reports: '$(Build.SourcesDirectory)\TestResult\**\coverage.cobertura.xml'
targetdir: '$(Build.SourcesDirectory)\coverlet\reports'
verbosity: 'Verbose'
condition: succeededOrFailed()
- task: PublishCodeCoverageResults@1
displayName: 'Publish code coverage'
inputs:
codeCoverageTool: Cobertura
summaryFileLocation: $(Build.SourcesDirectory)\coverlet\reports\Cobertura.xml
failIfCoverageEmpty: false
reportDirectory: $(Build.SourcesDirectory)\coverlet\reports\
condition: succeededOrFailed()