本文将讨论TestNG中@Test annotation的threadPoolSize属性。那么,我们开始吧。
那么,threadPoolSize属性有什么用处呢?答案是,无论何时您想要多次并行地运行一个测试方法,您都需要这个属性。该方法将从invocationCount属性指定的多个线程中调用。
import org.testng.Assert;
import org.testng.annotations.Test;
public class CodekruTest {
@Test(invocationCount = 5, threadPoolSize = 5)
public void testMethod() {
int expected = 5;
int actual = 5;
Assert.assertEquals(actual, expected);
}
}
产出-
Executing the test
Executing the test
Executing the test
Executing the test
Executing the test
PASSED: testMethod
PASSED: testMethod
PASSED: testMethod
PASSED: testMethod
PASSED: testMethod
===============================================
Default test
Tests run: 5, Failures: 0, Skips: 0
你可能想问invocationCount在那里做什么。如果不使用invocationCount属性,我们将无法使用threadPoolSize。
注意:如果没有定义invocationCount,threadPoolSize属性将被忽略。
让我们看一个例子。
import org.testng.Assert;
import org.testng.annotations.Test;
public class CodekruTest {
@Test(threadPoolSize = 5)
public void testMethod() {
int expected = 5;
int actual = 5;
System.out.println("Executing testMethod");
Assert.assertEquals(actual, expected);
}
}
产出-
Executing testMethod
PASSED: testMethod
===============================================
Default test
Tests run: 1, Failures: 0, Skips: 0
===============================================
我们可以看到测试用例只执行了一次。
什么时候可以使用threadPoolSize属性?可能有一种情况,我们想运行一个测试方法多次(比如100次)。然后,一个接一个地运行100个测试用例可能会花费大量的时间。因此,为了减少执行时间,我们可以在那里使用一个值(比如5)的threadPoolSize,现在测试用例将在并行实例中运行,并且用例将在更短的时间内执行。