Как запускать тесты в параллелизме на уровне класса только после того, как один из ваших классов завершил свои тесты - PullRequest
0 голосов
/ 30 мая 2020

Я застрял в довольно уникальной проблеме, и я уверен, что некоторые из вас могли столкнуться с подобной проблемой в какой-то момент.

Итак, в моем наборе testNg всего 10 тестовых классов, и я хочу, чтобы они запустились в параллели. Это легко, но проблема в том, что один из моих классов позволяет предположить, что класс Test A не только устанавливает тестовые данные, но и тестирует некоторые функции приложения, поэтому я не могу использовать его в аннотациях BeforeSuite или BeforeTest. Тестовые данные, созданные путем выполнения тестов в этом классе, важны для запуска других тестовых классов, поэтому я действительно ломаю голову, как реализовать параллелизм на уровне класса таким образом, чтобы параллельный запуск запускался только после тестов в разделе Тесты Класс завершает свое выполнение.

Сводка

Тест класса A

public class TestsA {

   @BeforeClass
   public setupTestClass(){
   -----some code--------
  }
  @Test
  public test1(){
 ------some code---
}

Я хочу, чтобы этот класс TestA запускался первым, а затем параллельно создавал экземпляры других тестовых классов. Любая помощь по этому поводу будет очень признательна.

Спасибо

Ответы [ 2 ]

0 голосов
/ 02 июня 2020

Я нашел решение указанной выше проблемы. Все, что мне нужно было сделать, это настроить два разных теста для моего набора testng. xml. 1-й тест будет иметь только тестовый класс A, а другой тест будет иметь другие тестовые классы, имеющие параллелизм на уровне класса. Поскольку в первом тесте есть только один класс, тесты этого класса будут выполнены первыми. В моем случае Test Class A отвечает за проверку некоторых функций, а также за настройку некоторых данных. Затем следующий тест вашего testng. xml создаст экземпляры других классов параллельно.

Ниже показано, как выглядит мой testng. xml


    <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">

    <suite name="Test_Suite_Name" verbose="1" parallel="classes" thread-count="4">
        <test name="TEST_TESTCLASSA" preserve-order="true">
            <parameter name="environment" value="macos"/>
            <groups>
                <run>
                    <include name="Smoke"/>
                    <exclude name="Sanity"/>
                    <exclude name="Exclude"/>
                </run>
            </groups>
            <classes>
                <class name="testpackage.TestClassA"/>
            </classes>
        </test>
        <test name="TEST_OTHER_TESTS" preserve-order="true">
            <parameter name="environment" value="macos"/>
            <groups>
                <run>
                    <include name="Smoke"/>
                    <exclude name="Sanity"/>
                    <exclude name="Exclude"/>
                </run>
            </groups>
            <classes>
                <class name="testpackage.TestClassB"/>
                <class name ="testpackage.TestClassC"/>
                <class name="testpackage.TestClassD"/>
                <class name="testpackage.TestClassE"/>
                <class name="testpackage.TestClassF"/>
                <class name="testpackage.TestClassG"/>
            </classes>
        </test>
    </suite>
0 голосов
/ 31 мая 2020

По умолчанию все методы тестирования будут иметь значение приоритета «0». Поэтому, если вы хотите, чтобы конкретный метод тестирования c выполнялся перед всеми другими тестами, вы можете установить приоритет как -1 для этого конкретного теста. Меньшим приоритетом в первую очередь будет его выполнение в testng. Таким образом, тест с приоритетом -1 предшествует всем другим тестам с приоритетом «0».

Пример Установка приоритета для одного метода тестирования

public class ClassA {

@Test(priority = -1)
public void b(){
    System.out.println("Test1");
}

@Test
public void a(){
    System.out.println("Test2");
}

}

Пример 2: Установка приоритета для всего класса

@Test(priority = -1)
public class ClassA {


public void b(){
    System.out.println("Test1");
}


public void a(){
    System.out.println("Test2");
}

}

Вывод Для обоих примеров:

Тест1

Тест2

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...