当前位置: 首页 > 知识库问答 >
问题:

TestNG并行测试运行

杜阳泽
2023-03-14

我试图用TestNG并行运行一个示例测试项目。但它是在一个线程中顺序执行的。我漏掉什么了吗?

public class ParallelSuiteTest {
    String testName = "";
    @BeforeTest
    @Parameters({ "test-name" })
    public void beforeTest(String testName) {
        this.testName = testName;
        long id = Thread.currentThread().getId();
        System.out.println("Before test " + testName + ". Thread id is: " + id);
    }

    @BeforeClass
    public void beforeClass() {
        long id = Thread.currentThread().getId();
        System.out.println("Before test-class " + testName + ". Thread id is: "
                + id);
    }

    @Test
    public void testMethodOne() {
        long id = Thread.currentThread().getId();
        System.out.println("Sample test-method " + testName
                + ". Thread id is: " + id);
    }

    @AfterClass
    public void afterClass() {
        long id = Thread.currentThread().getId();
        System.out.println("After test-method  " + testName
                + ". Thread id is: " + id);
    }

    @AfterTest
    public void afterTest() {
        long id = Thread.currentThread().getId();
        System.out.println("After test  " + testName + ". Thread id is: " + id);
    }
}
<suite name="Test-class Suite" parallel="tests" thread-count="2">
    <test name="Test-class test 1">
        <parameter name="test-name" value="test-method One" />
        <classes>
            <class name="ParallelSuiteTest" />
        </classes>
    </test>
    <test name="Test-class test 2">
        <parameter name="test-name" value="test-method Two" />
        <classes>
            <class name="ParallelSuiteTest" />
        </classes>
    </test>
</suite>
.Before test test-method One. Thread id is: 1
Before test-class test-method One. Thread id is: 1
Sample test-method test-method One. Thread id is: 1
After test-method  test-method One. Thread id is: 1
After test  test-method One. Thread id is: 1
Before test test-method One. Thread id is: 1
Before test-class test-method One. Thread id is: 1
Sample test-method test-method One. Thread id is: 1
After test-method  test-method One. Thread id is: 1
After test  test-method One. Thread id is: 1

===============================================
Test-class Suite
Total tests run: 2, Failures: 0, Skips: 0
===============================================

谢了。

共有1个答案

冯宏恺
2023-03-14

在调查了这个问题之后,我发现这是在TestNG库版本6.13中引入的回归。以下是该问题的链接:https://github.com/cbeust/testng/issues/1636

将TestNG版本更改为6.11解决了这个问题。

 类似资料:
  • 我正在试验如何与maven surefire和testng并行运行测试。然而,配置似乎不是很简单,我无法让它工作。下面是我的虚拟测试。 这是我的surefire配置: 测试基本上是按顺序运行的。以下是日志作为证据: 我的意图是并行运行所有测试(直到方法级别)。那么,我该如何实现呢?

  • 这是驱动程序类,它将为每个测试方法创建驱动程序实例。

  • 共设5个测试班。每一个都使用@Factory(dataprovider=“data”)初始化。我想实现的是,每个测试类中的测试方法应该与dataprovider实例并行运行。此外,测试类应该并行运行。 如下所示。TestClass1应该并行运行dataprovider实例。因此,测试类TestClass1的所有方法将为dataprovider实例并行运行。 data-provider-thread

  • 当我试图在Selenium Grid 2旁边使用TestNG并行运行测试时,我似乎遇到了一个问题。 尽管打开的浏览器数量与我正在运行的测试数量相匹配,但所有测试的所有指令都被发送到同一个浏览器窗口。例如,每个测试都会打开一个页面并尝试登录。四个浏览器窗口将打开,但一个浏览器窗口将导航到登录页面四次,然后键入用户名四次,而其余的浏览器窗口保持不活动。 以下是我如何启动网格: xml套件是这样设置的:

  • 我正在使用cucumber测试和testng,我计划并行运行测试。我以前有使用testng框架和并行执行的经验,如果不使用mavensurfire插件(pom.xml),我如何实现相同的效果 我的配置, Cucumber JVM,TestNGCucumberRunner。用于触发特性文件的java文件