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

NUnit 3中能否并行运行TestCase?并行执行异常排查

问题分析与解决方案

你的问题核心在于测试实例的Driver共享以及NUnit并行执行的全局配置缺失,导致看似开了多个浏览器,但实际测试逻辑还是复用同一个Driver实例,且并行未真正启用。以下是具体修复步骤:

1. 确保Driver为实例字段(非静态)

检查你的BaseTests基类,如果driver是静态字段,所有测试用例会共享同一个浏览器实例,这是最常见的问题。修改基类中的Driver定义:

// BaseTests 中的定义,确保是非静态的实例字段
protected IWebDriver driver;

这样每个TestCase对应的测试实例都会创建独立的Driver,不会互相干扰。

2. 添加TearDown销毁Driver

每个测试结束后必须关闭浏览器并释放资源,否则会残留无效进程,也可能导致后续测试异常:

[TearDown]
public void AfterEach()
{
    // 先退出浏览器,再释放资源
    driver?.Quit();
    driver?.Dispose();
}

3. 配置NUnit全局并行设置

仅靠[Parallelizable]标记不够,需要在项目中添加nunit.runsettings文件启用并行执行:

<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
  <NUnit>
    <Parallelize>
      <Workers>8</Workers> <!-- 根据你的CPU核心数调整,比如8核就设8 -->
      <Scope>All</Scope> <!-- 允许测试方法级别的并行 -->
    </Parallelize>
  </NUnit>
</RunSettings>

添加后,在测试运行时选择使用这个配置文件(比如在Visual Studio的测试设置中指定)。

4. 优化Parallelizable标记位置

将并行标记移到TestFixture级别,确保整个测试类下的所有TestCase都能并行执行:

[TestFixture]
[Parallelizable(ParallelScope.Children)]
public class AuthorisationTests : BaseTests
{
    [Test]
    [TestCase("AccountAdministration")]
    [TestCase("AdvancedConfiguration")]
    [TestCase("AdvancedEntry")]
    [TestCase("AdvancedReporting")]
    [TestCase("BasicConfiguration")]
    [TestCase("DataEntry")]
    [TestCase("Reporting")]
    [TestCase("Revenue")]
    [TestCase("SysAdmin")]
    public void logged_in_user_should_be_able_to_access_only_appropriate_pages(string userType)
    {
        // 你的测试逻辑
    }
}

完成以上步骤后,每个TestCase会启动独立的浏览器进程,并真正并行执行测试逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 14:25:18