Azure DevOps代码覆盖率与.覆盖率为PR和Cobertura的完整报告。

问题描述 投票:0回答:1

我有一个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)才能获得拉动请求的代码覆盖。

所以。

  • 我必须用 Visual Studio代码覆盖率 --collect:"Code Coverage" 来获取拉取请求的代码覆盖率,因为Cobertura的格式无法使用。
  • 我需要使用 工作机会 格式,以便得到一份可读的报告。代码覆盖率标签 中,但如果我使用了Cobertura报告,就不会出现 --collect:"Code Coverage" 在同一时间。

我似乎不能同时获得PR的代码覆盖和Cobertura格式的完整报告。

其他人 似乎也有同样的问题,但这个问题在那个帖子里没有解决。

我是否遗漏了什么?

azure-devops code-coverage
1个回答
1
投票

你可以尝试使用这个吗?

你必须安装 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选项发布代码覆盖,就可以使用该功能。对其他覆盖工具和结果格式的支持将在未来的里程碑中添加。

© www.soinside.com 2019 - 2024. All rights reserved.