Настройка параллельного запуска на уровне класса в TestNG
Я пытаюсь выяснить, как выполнить все мои тесты TestNG сначала в одном классе, затем во втором, во втором и так далее. Мне нужно использовать параллельный запуск для ускорения выполнения, хотя. Это тесты на селен, поэтому они могут быть медленными.
Учитывая следующий файл комплекта TestNG:
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Suite1" verbose="1" parallel="classes" thread-count="2">
<test name="parallel-running-test">
<classes>
<class name="com.mycompany.myproject.mypackage.MyFirstClassTest"/>
<class name="com.mycompany.myproject.mypackage.MySecondClassTest"/>
</classes>
</test>
..и следующие 2 класса:
Первый класс:
public class MyFirstClassTest {
@Test
public void myFirstClassTestOne(){
System.out.println("myFirstClassTestOne");
}
@Test (dependsOnMethods = {"myFirstClassTestOne"})
public void myFirstClassTestTwo(){
System.out.println("myFirstClassTestTwo");
}
@Test (dependsOnMethods = {"myFirstClassTestTwo"})
public void myFirstClassTestThree(){
System.out.println("myFirstClassTestThree");
}
@Test(dependsOnMethods = {"myFirstClassTestThree"})
public void myFirstClassTestFour(){
System.out.println("myFirstClassTestFour");
}
@Test(dependsOnMethods = {"myFirstClassTestFour"})
public void myFirstClassTestFive(){
System.out.println("myFirstClassTestFive");
}
}
Второй класс:
public class MySecondClassTest {
@Test
public void mySecondClassTestOne(){
System.out.println("mySecondClassTestOne");
}
@Test(dependsOnMethods = {"mySecondClassTestOne"})
public void mySecondClassTestTwo(){
System.out.println("mySecondClassTestTwo");
}
@Test(dependsOnMethods = {"mySecondClassTestTwo"})
public void mySecondClassTestThree(){
System.out.println("mySecondClassTestThree");
}
@Test(dependsOnMethods = {"mySecondClassTestThree"})
public void mySecondClassTestFour(){
System.out.println("mySecondClassTestFour");
}
@Test(dependsOnMethods = {"mySecondClassTestFour"})
public void mySecondClassTestFive(){
System.out.println("mySecondClassTestFive");
}
}
Тогда вывод выглядит следующим образом:
... Как я могу получить отчет как:
MyFirstClassTest
myfirstClassTestOne
myfirstClassTestTwo
myfirstClassTestThree
myfirstClassTestFour
myfirstClassTestFive
MySecondClassTest
mySecondClassTestOne
mySecondClassTestTwo
mySecondClassTestThree
mySecondClassTestFour
mySecondClassTestFive
NB - мне нужны зависимости от методов, и я удалил все содержимое браузера и фактический материал селена.
2 ответа
Ваша проблема заключается в том, как IntelliJ отображает результаты тестов. По умолчанию тесты отображаются в порядке их завершения.
Вы можете изменить его и отсортировать по алфавиту, если вы предпочитаете:
К сожалению, IntelliJ не группирует тесты по имени класса (или я не нашел способ сделать это).
Может быть, вы должны попросить эту функцию на https://youtrack.jetbrains.com/
Steerpike, вы можете попробовать запустить свои тесты параллельно (вместо классов), поэтому небольшие изменения в вашем XML должны дать вам то, что вам нужно:
!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Suite1" verbose="1" parallel="tests" thread-count="2">
<test name="parallel-running-test1">
<classes>
<class name="com.mycompany.myproject.mypackage.MyFirstClassTest"/>
</classes>
</test>
<test name="parallel-running-test2">
<classes>
<class name="com.mycompany.myproject.mypackage.MySecondClassTest"/>
</classes>
</test>
</suite>
Удачи!