问题描述
- 我需要在 Azure DevOps 中并行运行测试。我没有成功使用 runInParallel 任务中的属性:VSTest@2。测试在 Azure DevOps 中的执行时间比在我的本地机器上执行要长得多。
- 我尝试过任务:CmdLine@2 来启动我的测试,它们并行运行,并且我在本地的机器上执行相同的时间。在这里,我在发布测试结果时遇到了问题。如果有任何失败测试 - 测试发布不成功,如果所有测试都成功 - 测试发布成功。我想以任何形式发布测试结果。我错过了什么?
谢谢!
我的 yaml:
trigger:
branches:
exclude:
- main
- tests-stress
- tests-regression
schedules:
- cron: "00 04 * * *"
displayName: Daily Automatic Test Run
branches:
include:
- main
pool:
vmImage: 'windows-latest'
variables:
solution: '**/*.sln'
buildplatform: 'Any cpu'
buildConfiguration: 'Release'
steps:
- task: NuGetToolInstaller@1
displayName: 'Use NuGet 5.8.0'
inputs:
versionSpec: 5.8.0
- task: NuGetCommand@2
inputs:
restoreSolution: '$(solution)'
- task: VSBuild@1
inputs:
solution: '$(solution)'
msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:DesktopBuildPackageLocation="$(build.artifactStagingDirectory)\WebApp.zip" /p:DeployIisAppPath="Default Web Site"'
platform: '$(buildplatform)'
configuration: '$(buildConfiguration)'
- task: CmdLine@2
inputs:
script: 'dotnet test $(Build.Repository.LocalPath)/Stresstests/bin/Release/netcoreapp3.1/Stresstests.dll --configuration Release --no-build -s $(Build.Repository.LocalPath)/SettingsModelsWorkflows/AllRunSettings/Regression.runsettings --logger trx'
failOnStderr: false
- task: PublishTestResults@2
inputs:
failTaskOnFailedTests: false
testRunner: VSTest
testResultsFiles: '**/*.trx'
searchFolder: '$(Build.Repository.LocalPath)'
解决方法
我认为缺少 condition
属性:
- task: PublishTestResults@2
inputs:
failTaskOnFailedTests: false
testRunner: VSTest
testResultsFiles: '**/*.trx'
searchFolder: '$(Build.Repository.LocalPath)'
condition: succeededOrFailed()
来自 documentation:在这个 YAML 中,即使上一步由于 successedOrFailed() 而失败,PublishTestResults@2 也会运行