У меня есть 3 класса теста:
Первый тест:
public class FirstTest {
@BeforeClass(alwaysRun = true)
public void setUp() {
System.out.println("FirstTest: set up class");
}
@Test(groups = "FirstTest")
public void test1() {
System.out.println("FirstTest: test1");
}
@Test(groups = "FirstTest")
public void test2() {
System.out.println("FirstTest: test2");
}
@Test(
groups = "FirstTest",
dependsOnMethods = "test2"
)
public void test3() {
System.out.println("FirstTest: test3");
}
@Test(
groups = {"FirstTest", "first:4"},
dependsOnMethods = "test3"
)
public void test4() {
System.out.println("FirstTest: test4");
}
@AfterClass(alwaysRun = true)
public void tearDown() {
System.out.println("FirstTest: tear down class");
}
}
Второй тест:
public class SecondTest {
@BeforeClass(alwaysRun = true)
public void setUp() {
System.out.println("SecondTest: set up class");
}
@Test(groups = "SecondTest")
public void test1() {
System.out.println("SecondTest: test1");
}
@Test(groups = "SecondTest")
public void test2() {
System.out.println("SecondTest: test2");
}
@Test(
dependsOnGroups = "first:4",
groups = "SecondTest"
)
public void test3() {
System.out.println("SecondTest: test3");
}
@Test(groups = "SecondTest")
public void test4() {
System.out.println("SecondTest: test4");
}
@AfterClass(alwaysRun = true)
public void tearDown() {
System.out.println("SecondTest: tear down class");
}
}
Другой тест:
public class OtherTest {
@BeforeClass(alwaysRun = true)
public void setUp() {
System.out.println("OtherTest: set up class");
}
@Test(groups = "OtherTest")
public void test1() {
System.out.println("OtherTest: test1");
}
@Test(groups = "OtherTest")
public void test2() {
System.out.println("OtherTest: test2");
}
@Test(groups = "OtherTest")
public void test3() {
System.out.println("OtherTest: test3");
}
@Test(groups = "OtherTest")
public void test4() {
System.out.println("OtherTest: test4");
}
@AfterClass(alwaysRun = true)
public void tearDown() {
System.out.println("OtherTest: tear down class");
}
}
Я хочузапускать их в несколько потоков - один поток на класс.Запуск тестов из каждого класса не должен прерываться для выполнения других тестов, пока весь тестовый класс не будет пройден.Но у меня есть следующий результат (например, один поток):
TestNG.xml:
<suite name="Suite1" parallel="classes" thread-count="1" verbose="10">
<test name="sample" preserve-order="true" >
<classes>
<class name="sample.testng.FirstTest" />
<class name="sample.testng.SecondTest" />
<class name="sample.testng.OtherTest" />
</classes>
</test>
</suite>
Фактический результат:
sample.testng.SecondTest.setUp() 21480956
sample.testng.SecondTest.test4() 21480956
sample.testng.SecondTest.test1() 21480956
sample.testng.SecondTest.test2() 21480956
sample.testng.OtherTest.setUp() 32782069
sample.testng.OtherTest.test4() 32782069
sample.testng.OtherTest.test1() 32782069
sample.testng.OtherTest.test3() 32782069
sample.testng.OtherTest.test2() 32782069
sample.testng.OtherTest.tearDown() 32782069
sample.testng.FirstTest.setUp() 2623667
sample.testng.FirstTest.test1() 2623667
sample.testng.FirstTest.test2() 2623667
sample.testng.FirstTest.test3() 2623667
sample.testng.FirstTest.test4() 2623667
sample.testng.FirstTest.tearDown() 2623667
sample.testng.SecondTest.test3() 21480956
sample.testng.SecondTest.tearDown() 21480956
Как получить следующий результат?
sample.testng.SecondTest.setUp() 21480956
sample.testng.SecondTest.test4() 21480956
sample.testng.SecondTest.test1() 21480956
sample.testng.SecondTest.test2() 21480956
sample.testng.SecondTest.test3() 21480956
sample.testng.SecondTest.tearDown() 21480956
sample.testng.OtherTest.setUp() 32782069
sample.testng.OtherTest.test4() 32782069
sample.testng.OtherTest.test1() 32782069
sample.testng.OtherTest.test3() 32782069
sample.testng.OtherTest.test2() 32782069
sample.testng.OtherTest.tearDown() 32782069
sample.testng.FirstTest.setUp() 2623667
sample.testng.FirstTest.test1() 2623667
sample.testng.FirstTest.test2() 2623667
sample.testng.FirstTest.test3() 2623667
sample.testng.FirstTest.test4() 2623667
sample.testng.FirstTest.tearDown() 2623667