我有一个Azure DevOps管线,它的功能是 验证拉动请求. 我有 配置 dotnet test
来收集代码覆盖率指标,使用 --collect "Code coverage"
争论。
- task: DotNetCoreCLI@2
displayName: dotnet test
inputs:
command: 'test'
arguments: '--configuration $(BuildConfiguration) --collect "Code coverage" /p:CollectCoverage=true /p:CoverletOutputFormat=cobertura'
workingDirectory: $(baseWorkingDirectory)
projects: 'tests/**/*.csproj'
nobuild: true
如你所见,我也通过了... /p:CollectCoverage=true /p:CoverletOutputFormat=cobertura
. 这是我必须做的,以generete覆盖报告。
- task: CmdLine@2
inputs:
script: dotnet tool install -g dotnet-reportgenerator-globaltool
- task: CmdLine@2
inputs:
script: reportgenerator -reports:$(Build.SourcesDirectory)/tests/**/coverage.cobertura.xml -targetdir:$(Build.SourcesDirectory)/CodeCoverage -reporttypes:HtmlInline_AzurePipelines;Cobertura
- task: PublishCodeCoverageResults@1
inputs:
codeCoverageTool: Cobertura
summaryFileLocation: '$(Build.SourcesDirectory)/CodeCoverage/Cobertura.xml'
reportDirectory: '$(Build.SourcesDirectory)/CodeCoverage'
文件 指出 只有使用Visual Studio代码覆盖结果格式(文件扩展名为.coverage)才能获得拉动请求的代码覆盖。
所以。
--collect:"Code Coverage"
来获取拉取请求的代码覆盖率,因为Cobertura的格式无法使用。--collect:"Code Coverage"
在同一时间。我似乎不能同时获得PR的代码覆盖和Cobertura格式的完整报告。
其他人 似乎也有同样的问题,但这个问题在那个帖子里没有解决。
我是否遗漏了什么?
你可以尝试使用这个吗?
你必须安装 coverlet.collector
包的所有测试项目中。请注意,我使用了参数 --collect:"XPlat Code Coverage"
.
# You just added coverlet.collector to use 'XPlat Code Coverage'
- task: DotNetCoreCLI@2
displayName: Test
inputs:
command: test
projects: '**/*Tests/*.csproj'
arguments: '--configuration $(buildConfiguration) --collect:"XPlat Code Coverage" -- RunConfiguration.DisableAppDomain=true'
workingDirectory: $(Build.SourcesDirectory)
- task: DotNetCoreCLI@2
inputs:
command: custom
custom: tool
arguments: install --tool-path . dotnet-reportgenerator-globaltool
displayName: Install ReportGenerator tool
- script: ./reportgenerator -reports:$(Agent.TempDirectory)/**/coverage.cobertura.xml -targetdir:$(Build.SourcesDirectory)/coverlet/reports -reporttypes:"Cobertura"
displayName: Create reports
- task: PublishCodeCoverageResults@1
displayName: 'Publish code coverage'
inputs:
codeCoverageTool: Cobertura
summaryFileLocation: $(Build.SourcesDirectory)/coverlet/reports/Cobertura.xml
请注意,您可能有不同的文件夹结构。
如果你想使用 Code coverage for pull requests
功能,你不应该使用Cobertura。
拉请求的代码覆盖能力目前只适用于Visual Studio代码覆盖(.coverage)格式。如果您使用Visual Studio测试任务、dotnet core任务的测试动词和发布测试结果任务的TRX选项发布代码覆盖,就可以使用该功能。对其他覆盖工具和结果格式的支持将在未来的里程碑中添加。