Всем привет.
Ситуация состоит в следующем: есть набор тестовых методов в класс, данные для которых поставляются через фактори. Мы хотим чтобы инстансы этих классов выполнялись параллельно, но TestNG выполняет их последовательно.
Вот пример кода:
package test;
import org.apache.log4j.Logger;
import org.testng.annotations.*;
import org.testng.annotations.Test;
public class TestTest
{
private String param;
@Factory( dataProvider = "prov" )
public TestTest( String param )
{
this.param = param;
}
@DataProvider( name = "prov" )
public static Object[][] dataProvider()
{
System.out.println( "[" + Thread.currentThread().getId() + "] Provide data" );
return new Object[][] {
{ "One" },
{ "Two" },
{ "Three" },
};
}
@BeforeClass
public void prepare()
{
System.out.println( "[" + Thread.currentThread().getId() + "] Prepare " + param );
}
@Test
public void test1()
{
System.out.println( "[" + Thread.currentThread().getId() + "] Test1 " + param );
}
@Test( dependsOnMethods = "test1" )
public void test2()
{
System.out.println( "[" + Thread.currentThread().getId() + "] Test2 " + param );
sleep();
}
@AfterClass
public void clean()
{
System.out.println( "[" + Thread.currentThread().getId() + "] Clean " + param );
}
private void sleep() {
try {
Thread.sleep(10000);
} catch (Exception ignored) {}
}
}
и testng.xml
Когда group-by-instances=“true”, тесты запускаются последовательно, а когда group-by-instances=“false”, тесты запускаются в разных потоках, но выполняются как будто это один поток т.е. потоки ждут друг друга.