You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure DevOps中.NET项目测试任务配置失败求助

Azure DevOps构建任务忽略测试失败继续执行的配置问题

问题描述

尝试在Azure DevOps中配置构建任务,让流水线忽略不稳定测试的失败,继续执行后续任务,但测试环节始终失败。使用dotnet test脚本和PublishTestResults@2任务后,收到错误提示:##[error]Bash exited with code '1'。

当前流水线配置YAML如下:

parameters:
- name: solution
  type: string
- name: buildPlatform
  type: string
- name: buildConfiguration
  type: string
 

steps:
- task: UseDotNet@2
  inputs:
    version: '5.0.x'
    packageType: 'sdk'

- task: DotNetCoreCLI@2
  displayName: 'dotnet restore'
  inputs:
    command: restore
    projects: ${{ parameters.solution }}
    feedsToUse: select

- task: DotNetCoreCLI@2
  displayName: 'dotnet build'
  inputs:
    command: build
    includeNuGetOrg: true
    projects: ${{ parameters.solution }}
    arguments: '--configuration ${{ parameters.buildConfiguration }}' 

- script: dotnet test ${{ parameters.solution }} --logger trx
- task: PublishTestResults@2
  condition: succeededOrFailed()
  inputs:
    testRunner: VSTest
    testResultsFiles: '**/*.trx'   

- task: CopyFiles@2
  displayName: 'copy build'
  inputs:
    sourceFolder: '$(Build.SourcesDirectory)'
    Contents: |
      **/*
      !.git/**/*
    targetFolder: '$(Build.ArtifactStagingDirectory)'


- task: PublishBuildArtifacts@1
  displayName: 'publish artifact'
  inputs:
    pathToPublish: '$(Build.ArtifactStagingDirectory)'
    artifactName: drop

- task: ArchiveFiles@2
  displayName: 'zip nuget packages'
  inputs:
    rootFolderOrFile: '$(Build.ArtifactStagingDirectory)/_nupkgs'
    includeRootFolder: false
    archiveType: 'zip'
    archiveFile: '$(Build.ArtifactStagingDirectory)/NugetPackages.zip'
    replaceExistingArchive: true


- task: PublishBuildArtifacts@1
  displayName: 'publish nuget packages'
  inputs:
    pathToPublish: '$(Build.ArtifactStagingDirectory)/NugetPackages.zip'
    artifactName: nugetPackages 

解决方案

问题核心是dotnet test执行失败时会返回非0退出码,导致步骤失败并终止流水线。要实现忽略测试失败继续执行,需做两处调整:

  1. 修改dotnet test脚本,添加参数并允许步骤失败
    将原script步骤替换为:

    - script: dotnet test ${{ parameters.solution }} --logger trx --no-build --fail-fast false
      continueOnError: true
    
    • --no-build:跳过测试项目构建(前面已执行dotnet build,避免重复操作)
    • --fail-fast false:即使有测试失败,仍运行全部测试用例
    • continueOnError: true:告知流水线即使该步骤失败,也继续执行后续任务
  2. 保留PublishTestResults@2的条件配置
    condition: succeededOrFailed()确保无论测试步骤成功与否,都会发布测试结果,方便查看失败测试详情。

修改后的完整测试相关步骤如下:

- script: dotnet test ${{ parameters.solution }} --logger trx --no-build --fail-fast false
  continueOnError: true
- task: PublishTestResults@2
  condition: succeededOrFailed()
  inputs:
    testRunner: VSTest
    testResultsFiles: '**/*.trx'

配置完成后,即使存在测试失败,流水线仍会继续执行后续的文件复制、工件发布等任务,同时测试结果会正常上传展示。

内容的提问来源于stack exchange,提问作者someone

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 15:48:48