并行套件

如果您正在运行多个套件文件(例如“ java org.testng.TestNG testng1.xml testng2.xml”)并且您希望这些套件中的每一个都在单独的线程中运行,这将很有用。您可以使用以下命令行标志来指定线程池的大小:

  1. java org.testng.TestNG -suitethreadpoolsize 3 testng1.xml testng2.xml testng3.xml

并行测试、类和方法

标签的parallel属性有以下取值

  1. <suite name="My suite" parallel="methods" thread-count="5">
  2. <suite name="My suite" parallel="tests" thread-count="5">
  3. <suite name="My suite" parallel="classes" thread-count="5">
  4. <suite name="My suite" parallel="instances" thread-count="5">
  • parallel=”methods”:TestNG 将在单独的线程中运行所有测试方法。依赖方法也将在单独的线程中运行,但它们将遵循您指定的顺序。
  • parallel=”tests”:TestNG 将在同一线程中运行同一 标记中的所有方法,但每个 标记将在单独的线程中。这允许您将所有非线程安全的类分组在同一个 中,并保证它们都将在同一个线程中运行,同时利用 TestNG 使用尽可能多的线程来运行您的测试。
  • parallel=”classes”:TestNG 将在同一个线程中运行同一个类中的所有方法,但每个类将在单独的线程中运行。
  • parallel=”instances”:TestNG 将在同一个线程中运行同一个实例中的所有方法,但两个不同实例上的两个方法将在不同线程中运行。

此外,属性 thread-count允许您指定应为此执行分配多少线程。

您还可以指定应从不同的线程调用@Test方法。您可以使用属性threadPoolSize来实现此结果:

  1. @Test(threadPoolSize = 3, invocationCount = 10, timeOut = 10000)
  2. public void testServer() {

在这个例子中,函数testServer将被三个不同的线程调用十次。此外,十秒的超时可确保没有任何线程会永远阻塞在该线程上。