Как сказать Maven2 выполнять тесты jUnit по одному в новом экземпляре JVM? - PullRequest
13 голосов
/ 25 июля 2011

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

Ответы [ 3 ]

28 голосов
/ 25 июля 2011

Вы должны разветвлять 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

Как описано вдокументация: вилки "Always" для каждого тестового класса .Я не знаю, будет ли настройка « 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 голосов
/ 25 июля 2011

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

1 голос
/ 12 марта 2015

Ну, я попробовал эти ответы, но то, что я только что получил, было несколькими тестовыми функциями одного и того же теста JUnit, запущенного одновременно.Для создания JVM для каждого файла JUnit Test (что мне было нужно) вы должны использовать следующую конфигурацию (Разница это параметр 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>

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

...