Я работаю над проектом maven с тысячами тестов, которые выполняются очень медленно (требуется 2 часа для запуска всех тестов). Так что я пытался запускать тесты параллельно настроив безошибочный плагин следующим образом:Как запустить тесты проверки подлинности параллельно, заставляя некоторых запускать последовательно?
<configuration>
<failIfNoTests>false</failIfNoTests>
<reuseForks>false</reuseForks>
<reuseForks>true</reuseForks>
<forkCount>2C</forkCount>
<systemPropertyVariables>
<jacoco-agent.destfile>target/jacoco.exec</jacoco-agent.destfile>
</systemPropertyVariables>
<parallel>suites</parallel>
<threadCount>12</threadCount>
</configuration>
Но некоторые из тестов в их @Before
и @After
методов, где мы инициализации и очистки некоторых ресурсов (это, кажется, связанной с к конфликтам портов).
Я попытался добавить эту аннотацию @net.jcip.annotations.NotThreadSafe
к неудачным испытаниям, как описано в surefire documentation, чтобы последовательно запускать их и избегать конфликтов. Однако это не сработало, и эти тесты все еще терпят неудачу !!!
Любой указатель на то, как принудительно запускать некоторые завершающие тесты для последовательного запуска одного и того же процесса JVM и одного потока, в то время как остальные будут работать параллельно (потенциально на разных JVM-процессах)?
EDIT 1 Теперь я попытался разделить конфигурацию безошибочного на два: один для последовательных испытаний и еще один для параллельных испытаний. Однако этот подход не улучшает время выполнения, так как у меня все еще есть тесты, которые терпят неудачу, и для выполнения всех тестов требуется 2 часа.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${surefire.version}</version>
<!-- Sequential tests -->
<configuration>
<includes>**/*Sequential.java</includes>
<failIfNoTests>false</failIfNoTests>
<reuseForks>false</reuseForks>
<systemPropertyVariables>
<jacoco-agent.destfile>target/jacoco.exec</jacoco-agent.destfile>
</systemPropertyVariables>
</configuration>
<executions>
<!-- Parallel tests -->
<execution>
<id>parallel-tests</id>
<phase>test</phase>
<goals>
<goal>test</goal>
</goals>
<configuration>
<includes>**/*.java</includes>
<excludes>
<exclude>**/*Sequential.java</exclude>
</excludes>
<failIfNoTests>false</failIfNoTests>
<reuseForks>true</reuseForks>
<forkCount>2C</forkCount>
<parallel>suites</parallel>
<threadCount>12</threadCount>
</configuration>
</execution>
</executions>
</plugin>
JCIP аннотаций только для документации, они не имеют семантических эффектов. – xTrollxDudex