Как заставить Maven Surefire запускать все классы и тесты? - PullRequest
0 голосов
/ 30 апреля 2018

У меня есть тестовый фреймворк Java JUnit Selenium, на котором выполняются некоторые тесты. Есть два класса с двумя тестами каждый.

У меня Maven SureFire настроен так

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <configuration>
        <forkCount>3</forkCount>
        <reuseForks>true</reuseForks>
        <parallel>methods</parallel>
        <threadCount>100</threadCount>
        <redirectTestOutputToFile>false</redirectTestOutputToFile>
    </configuration>
    <version>2.12.4</version>
</plugin>

Я бы хотел, чтобы он запускал 4 теста одновременно, но независимо от того, какую комбинацию настроек threadCount, parallel и fork я использую, мне может показаться, что я могу получить только один класс тестов для запуска время. Кажется, это должно работать, кто-нибудь может предложить решение?

Ответы [ 3 ]

0 голосов
/ 15 июня 2018

Я использую следующую конфигурацию для верного v2.20.1 в Maven v3.5.0

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>${maven-surefire-plugin.version}</version>
    <configuration>
        <useUnlimitedThreads>true</useUnlimitedThreads>
        <rerunFailingTestsCount>1</rerunFailingTestsCount>
        <parallel>methods</parallel>
        <forkedProcessExitTimeoutInSeconds>2</forkedProcessExitTimeoutInSeconds>
    </configuration>
</plugin>

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

0 голосов
/ 10 июня 2019

Возможно, для вас на 1 год позже, но на всякий случай это может кому-то помочь.

Использование методов параллельного =, как вы сделали, запускает все тесты (методы) одновременно, но 1 класс за раз (последовательный). Итак, в вашем примере, 2 класса с 2 тестами, вам нужно выполнить все тесты ClassA, а затем все тесты ClassB.

Если бы вы использовали параллельные = классы, то все классы запускались бы одновременно, но одновременно запускали 1 тест (метод) (последовательный). Таким образом, в вашем примере, 2 класса имеют 2 теста, у вас будет Test1 из ClassA и Test1 из ClassB для параллельного запуска, а затем Test2 для ClassA и Test2 для ClassB для последующего выполнения.

Поскольку вы хотите, чтобы все 4 теста выполнялись параллельно, используйте параллельный = все. И методы, и классы будут выполняться параллельно.

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <configuration>
        <parallel>all</parallel>
        <threadCount>10</threadCount>
    </configuration>
    <version>2.22.0</version>
</plugin>

Примечание: в качестве альтернативы вы можете удалить блок и установить их в качестве параметров в командной строке mvn. Пример: mvn clean test -Dparallel = all -DthreadCount = 10

С уважением,

0 голосов
/ 30 мая 2018

Вы хотите запускать комплекты параллельно или методы или тесты параллельно?

Единственное рабочее решение, которое я нашел для параллельной работы Suites, это настройка

<property>
   <name>suitethreadpoolsize</name>
   <value>8</value>
</property>

в pom.xml. Любая другая комбинация не работала, так как мне нужно было выполнить тесты на той же JVM, а не запускать разветвленные процессы.

...