azure - 失败的测试不会失败 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 或更高版本,但这是在构建管道中使用的,所以不知道该怎么做
我是否错过了点网测试任务中的某些内容?
保罗
解决方案
当您将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
推荐阅读
- oauth-2.0 - IdentityServer4授权代码流同意页面的最佳实践?
- javascript - 使用 Javascript 按 ID 查找两个元素
- cypress - 赛普拉斯获取元素长度返回双倍
- entity-framework - 每次我在数据库中进行更改时是否需要更新代码/应用程序?
- sql - 删除 Oracle SQL 中的重复行
- xamarin.android - 预加载 DialogFragment
- python - 来自 Amazon.com ( & Amazon.in ) 的程序化结账
- javascript - 复选框 onchanged 未在反应中更新
- shell - Bash 将内容插入到第 n 个 html 标记中
- node.js - 如何从firebase函数获得对firebase静态index.html的响应