Настройка параллельного запуска на уровне класса в 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>

Удачи!

Другие вопросы по тегам