0

我有一个构建管道,如下所示

    variables:
    - name: BuildParameters.solution
      value: '**/*.sln'
    - name: buildConfiguration
      value: Release
    name: $(date:yyyyMMdd)$(rev:.r)
    trigger: none
    resources:
      repositories:
      - repository: self
        type: git
    stages:
    - stage: __default
      jobs:
      - job: Job_1
        displayName: Agent job 1
        pool:
          vmImage: windows-2019
        steps:
        - task: UseDotNet@2
          displayName: '.NET Core 3.1.404'
          inputs:
            version: '3.1.404'
            packageType: sdk
        - task: DotNetCoreCLI@2
          enabled: true
          displayName: dotnet test
          continueOnError: true
          timeoutInMinutes: 0
          inputs:
            command: test
            projects: '**/*test/*.csproj'
            arguments: --configuration $(buildConfiguration) --verbosity n --collect "Code coverage"
            publishTestResults: true        
        - task: PublishTestResults@2
          inputs:
            testResultsFormat: XUnit
            testResultsFiles: '**/TEST.xml'
            mergeTestResults: true
            failTaskOnFailedTests: true

我故意破坏了一个测试

此测试失败,但发布测试结果任务不会完全失败

我收到警告

##[warning]No test result files matching **/TEST.xml were found. xunit

有没有人有过这个?

令人讨厌的是,如果测试失败,Azure 管道将这归类为部分成功,这并不理想。我正试图陷入一种情况,如果测试失败,我的管道就会失败

此管道用于验证拉取请求 - 即在 PR 中构建代码并确保所有测试通过

当我搜索这个时,有提到安装 .NET 4.6.2 或更高版本,但这是在构建管道中使用的,所以不知道该怎么做

我是否错过了点网测试任务中的某些内容?

保罗

4

1 回答 1

2

当您将publishTestResults字段设置true为 dotnet 测试任务时。请参阅下面的摘录。

此选项将 --logger trx --results-directory $(Agent.TempDirectory) 附加到命令行参数。

以上命令将生成 VSTest(trx) 格式的测试结果并将结果输出到文件夹$(Agent.TempDirectory)

在此处输入图像描述

所以你需要改变PublishTestResults@2如下的任务:

 - task: PublishTestResults@2
         inputs:
           testResultsFormat: VSTest  #change the format to VSTest
           testResultsFiles: '**/*.trx'  #change to find .trx file
           mergeTestResults: true
           failTaskOnFailedTests: true
           searchFolder: '$(Agent.TempDirectory)' #search the .trx file in $(Agent.TempDirectory)

通常该continueOnError字段false默认设置为。如果有任何测试失败,dotnet 测试任务将失败,见下文:

在此处输入图像描述

如果该continueOnError字段设置为true. dotnet 测试任务和管道将显示Warnig状态。

在此处输入图像描述

因此,您可以尝试将continueOnError字段设置为false,如果有任何测试失败,这将使任务和管道失败。并且不需要使用PublishTestResults任务。forpublishTestResults设置true为 dotnet 测试任务,测试结果将由 dotnet 测试任务自动发布。见下文:

 - task: DotNetCoreCLI@2
          enabled: true
          displayName: dotnet test
          continueOnError: false
          timeoutInMinutes: 0
          inputs:
            command: test
            projects: '**/*test/*.csproj'
            arguments: --configuration $(buildConfiguration) --verbosity n --collect "Code coverage"
            publishTestResults: true   
于 2020-12-24T02:30:12.927 回答