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

如何在Azure DevOps发布管道中立即重跑失败的测试?

问题:Azure DevOps VSTest@2任务实现失败测试立即重跑(顺序依赖测试场景)

我在Azure DevOps发布管道中使用VSTest@2任务执行基于C# + Selenium + nUnit的自动化测试。当前任务会等所有测试跑完后才重跑失败用例,但我的测试是顺序依赖的——前一个测试生成的数据会被后续测试使用。我需要实现:某个测试失败后立即重跑,在该测试通过或达到最大重跑次数前,不执行后续测试。比如5个测试,测试#2失败时,先反复重跑#2,直到通过或次数用尽,再继续后面的测试。

当前任务已开启重跑失败测试,但仅在全部测试结束后执行,YAML配置如下:

variables:
  Category: 'Regression'

steps:
- task: VSTest@2
  displayName: 'VsTest - testAssemblies'
  inputs:
    testAssemblyVer2: '**/Automation.dll'
    testFiltercriteria: 'Category=$(Category)'
    failOnMinTestsNotRun: false
    rerunFailedTests: true
    continueOnError: true

解决方案

1. 用nUnit内置特性实现即时重试+顺序执行

nUnit本身支持测试级别的即时重试和执行顺序控制,直接在测试代码中配置即可:

  • 给每个需要重试的测试方法添加Retry特性,指定最大重试次数,测试失败时会立即在本地重试,无需等待所有测试完成。
  • 用Order特性给每个测试指定执行顺序,确保依赖关系的测试按预期顺序运行。

示例代码:

[TestFixture]
public class SequentialTests
{
    [Test, Order(1), Retry(3)] // 最多重试3次
    public void Test1_CreateTestData()
    {
        // 生成测试数据的逻辑,比如创建测试用户、初始化环境
    }

    [Test, Order(2), Retry(3)]
    public void Test2_UseTestDataFromTest1()
    {
        // 依赖Test1生成的数据的逻辑,比如用测试用户登录
    }

    // 后续测试按顺序添加Order和Retry特性即可
}

2. 调整Azure DevOps任务配置

关闭VSTest@2任务自带的全局重试,避免和nUnit的重试机制冲突:

修改后的YAML:

variables:
  Category: 'Regression'

steps:
- task: VSTest@2
  displayName: 'VsTest - testAssemblies'
  inputs:
    testAssemblyVer2: '**/Automation.dll'
    testFiltercriteria: 'Category=$(Category)'
    failOnMinTestsNotRun: false
    rerunFailedTests: false # 关闭任务级别的全局重试,改用nUnit测试级重试
    continueOnError: true

3. 关键注意事项

  • 禁用测试并行执行:确保nUnit不会并行运行测试,同一测试类中的测试默认按顺序执行,但如果项目开启了并行,需要在nunit.runsettings中添加配置:
    <RunSettings>
      <NUnit>
        <Parallelize>
          <ParallelizeTestCollections>False</ParallelizeTestCollections>
        </Parallelize>
      </NUnit>
    </RunSettings>
    
  • 保证测试可重复:每次重试前要清理测试环境(比如关闭重启浏览器、重置测试数据),避免前一次失败的状态影响重试结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 07:06:10