失败的测试不会使 YAML 中的任务失败
Failed Test does not fail task in YAML
我有一个构建管道,如下所示
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 或更高版本的参考,但这是在构建管道中使用的,所以不确定如何去做
我在 dot net 测试任务中遗漏了什么吗?
保罗
当您为 dotnet 测试任务将 publishTestResults
字段设置为 true
时。请参阅下面摘自 here.
This option appends --logger trx --results-directory $(Agent.TempDirectory) to the command line arguments.
以上命令会生成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
的任务。对于 dotnet 测试任务 publishTestResults
设置为 true
,测试结果将由 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
我有一个构建管道,如下所示
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 或更高版本的参考,但这是在构建管道中使用的,所以不确定如何去做
我在 dot net 测试任务中遗漏了什么吗?
保罗
当您为 dotnet 测试任务将 publishTestResults
字段设置为 true
时。请参阅下面摘自 here.
This option appends --logger trx --results-directory $(Agent.TempDirectory) to the command line arguments.
以上命令会生成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
的任务。对于 dotnet 测试任务 publishTestResults
设置为 true
,测试结果将由 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