Как сообщить Maven2 выполнить jUnit тесты по одному в новом экземпляре JVM?

Можно ли сообщить Maven2 выполнить каждый тест jUnit в новом экземпляре JVM (fork) в последовательном режиме, то есть один за другим.

Ответ 1

Вы должны разветкить JVM, как описано здесь

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <version>2.9</version>
  <configuration>
    <forkMode>always</forkMode>
  </configuration>
</plugin>

Это также должно быть возможно, просто объявив свойство Sytem

mvn -DforkMode=always test

Как описано в документации: "всегда" forks для каждого тестового класса. Я не знаю, будет ли параметр "pertest" вилкой для каждого теста.


Спасибо @Djebel за указание, что forkMode теперь устарел. Существует подробная документация по Параметры вилки и параллельное тестирование "и как использовать новые параметры forkCount и reuseForks, а также следующие советы по миграции:

Old Setting                         New Setting
forkMode=once (default)             forkCount=1 (default), reuseForks=true (default)
forkMode=always                     forkCount=1 (default), reuseForks=false
forkMode=never                      forkCount=0
forkMode=perthread, threadCount=N   forkCount=N, (reuseForks=false, if you did not had that one set)

Ответ 2

Как насчет стандартной опции forkMode? Выполняет ли это тестирование параллельно, а не по порядку, как вы хотите?

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <configuration>
    <forkMode>always</forkMode>
  </configuration>
</plugin>

Ответ 3

Ну, я пробовал эти ответы, но то, что я только что получил, было несколько тестовых функций одного и того же теста JUnit, работающих одновременно. Для создания JVM для каждого тестового файла JUnit (что мне нужно) вы должны использовать следующую конфигурацию (разница в параметре parallel):

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.9</version>
        <configuration> 
            <parallel>classes</parallel>
            <reuseForks>false</reuseForks>
            <includes> 
                <include>**/*Test.java</include>     
            </includes> 
        </configuration>
    </plugin>

Замените матрицу **/*Test.java для тех, которые соответствуют тем JUnit Tests, которые должны выполняться в разных JVM. Для получения дополнительной информации посетите: Сочетание forkCount и параллельного.