Kri*_*lén 5 code-coverage azure-devops
我有一个用于验证拉取请求的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
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,我也通过了/p:CollectCoverage=true /p:CoverletOutputFormat=cobertura。为了生成覆盖率报告,我必须这样做:
- 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'
Run Code Online (Sandbox Code Playgroud)
文档指出拉取请求的代码覆盖率仅可使用 Visual Studio 代码覆盖率结果格式(文件扩展名 .coverage)
所以:
--collect:"Code Coverage"来获取拉取请求的代码覆盖率,因为 Cobertura 格式不起作用。--collect:"Code Coverage"上获得可读的报告,但如果我同时使用,Cobertura 报告将不会显示。看来我无法同时获得 PR 的代码覆盖率和 Cobertura 格式的完整报告。
其他人似乎也有同样的问题,但该问题并未在该线程中得到解决。
我错过了什么吗?
你能尝试使用这个吗?
您必须coverlet.collector在所有测试项目中安装软件包。请注意我使用了 argument --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
Run Code Online (Sandbox Code Playgroud)
请注意,您可能有不同的文件夹结构。
如果你想使用Code coverage for pull requests功能,你不应该使用 Cobertura:
拉取请求功能的代码覆盖率当前仅适用于 Visual Studio 代码覆盖率 (.coverage) 格式。如果您使用 Visual Studio 测试任务、dotnet core 任务的测试动词和发布测试结果任务的 TRX 选项来发布代码覆盖率,则可以使用此功能。对其他覆盖工具和结果格式的支持将在未来的里程碑中添加。
| 归档时间: |
|
| 查看次数: |
3688 次 |
| 最近记录: |