我们有 MSTest 框架,在类级别设置了并行化。这意味着,类内的测试是按顺序运行的。不同类别的测试可以并行运行。
[assembly: Parallelize(Workers = 0, Scope = ExecutionScope.ClassLevel)]
这些测试在启用策略的 ADO yaml 管道上运行。
- job: UITestsRun
strategy:
parallel: 10
steps:
- checkout: none
- download: ${{parameters.TestDllArtifactName}}
- task: VSTest@2
inputs:
testAssemblyVer2: '**\Automation.Tests.dll'
searchFolder: 'TestDllPath'
resultsFolder: 'TestResults'
testFiltercriteria: '${{parameters.AdditionalTestCriterias}}'
runSettingsFile: 'testsettings.runsettings'
publishRunAttachments: true
batchingBasedOnAgentsOption: customBatchSize
customBatchSizeValue: 10
rerunFailedTests: true
rerunFailedThreshold: 100
rerunMaxAttempts: 1
值得注意的是,同一类的测试可以在不同的作业(代理)上同时运行。
例如,Job1正在运行ClassA.Test1,而Job2正在运行ClassA.Test2.
这会导致很多失败,因为测试不是这样设计的。
我们希望测试在并行作业中运行,同时也考虑到类级别并行化。 有谁知道有没有办法做到这一点?
默认情况下,VSTest@2 任务应用“
basedOnTestCases
”(基于测试和代理的数量)作为批量测试切片方法。该方法简单地根据测试的数量和参与测试运行的代理的数量来划分测试。因此,这可能会将同一类中的测试划分为不同的并行作业来运行。
对于您的情况,您可以尝试选择“
basedOnAssembly
”(基于测试组件)方法。