使用dotnet测试覆盖范围低于目标时,Azure DevOps构建不会失败

时间:2019-06-17 12:12:42

标签: asp.net-core azure-devops code-coverage azure-pipelines

我在Azure DevOps中有一个ASP.NET Core应用程序的构建管道,并且希望将其与批准请求的条件一起使用。

steps:
      - script: dotnet restore
        displayName: 'Run command: dotnet restore'

      - script: >
                dotnet test 
                /p:CollectCoverage=true 
                /p:CoverletOutputFormat=cobertura 
                /p:Threshold=80 
                /p:ThresholdStat=total 
                /p:Exclude="[*xunit.*]*"
        displayName: 'Run command: dotnet test'

我想当代码覆盖率(使用Coverlet)没有通过时,构建失败。但是尽管没有达到接受标准,甚至生成了一条日志消息,该步骤仍成功运行。

  

coverlet.msbuild.targets(41,5):错误:总行覆盖率低于指定的80 Coverlet.msbuild.targets(41,5):错误:总分支覆盖率低于指定的80 Coverlet.msbuild .targets(41,5):错误:方法的总覆盖范围低于指定的80

在这种情况下是否可能导致失败?

1 个答案:

答案 0 :(得分:0)

尝试使用DotNetCoreCLI@2任务而不是简单的script来运行测试:

- task: DotNetCoreCLI@2
  displayName: 'dotnet test'
  inputs:
    commands: test
    projects: 'path/to/tests/projects'
    arguments: 'p:CollectCoverage=true
 /p:CoverletOutputFormat=cobertura /p:Threshold=80
 /p:ThresholdStat=total /p:Exclude="[*xunit.*]"'