Невозможно запустить тесты JUnit параллельно в Maven - PullRequest
0 голосов
/ 14 июня 2019

Я искал это повсюду, и хотя повсюду есть документация и ответы, мне кажется, что я не могу сделать эту работу

В настоящее время я работаю над многомодульным проектом с тысячами тестов, и, поскольку для их запуска требуются часы, я подумал, что будет хорошей идеей запустить их параллельно (только тесты, а не модули)

Для этого я обнаружил, что jUnit 4.7 или более поздней версии с maven-surefire-plugin может использоваться для параллельного запуска тестов

Вот моя конфигурация

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <configuration>
        <parallel>classes</parallel>
        <threadCount>10</threadCount>
        <argLine>-Xverify:none
            -enableassertions -Djava.util.Arrays.useLegacyMergeSort=true @{argLine}</argLine>
        <useSystemClassLoader>false</useSystemClassLoader>
        <includes>
            <include>**/*Test.java</include>
            <include>**/Test*.java</include>
        </includes>
        <excludes>
        ...
        ...
</plugin>

<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
    <scope>test</scope>
</dependency>

<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M3</version>
<configuration>
    <includes>
        <include>**/*Test.java</include>
        <include>**/Test*.java</include>
    </includes>
    <!-- Required until JDK >=1.7.0u72, see https://code.google.com/p/powermock/issues/detail?id=504 -->
    <runOrder>alphabetical</runOrder>
    <argLine>@{argLine}</argLine>
</configuration>
</plugin>

Работает на Apache Maven 3.3.9 Существуют все виды тестов (RunWith, PowerMock, BeforeClass, Before и т. Д.)

Вот что я делаю, чтобы проверить, работает ли моя конфигурация или нет

Сначала я соберу все модули

mvn clean install -Pbuild-all -DskipTests

Далее я запускаю определенные тесты модулей, используя следующую командную строку

mvn test -DfailIfNoTests=false -pl module1

Похоже, что вышеописанное не работает параллельно, так как я застреваю в некоторых тестах, и оно не идет дальше

Кроме того, я попытался запустить несколько jUnit тестовых классов, а не все в модуле, но я не уверен, что они работают параллельно, я использовал следующую команду

mvn test -DfailIfNoTests=false -Dtest=testClass1,testClass2,testClass3 -pl module1

Вышеуказанное завершается через 20 секунд, но я не уверен, что оно работает параллельно

Есть что-то, что я пропускаю?

...