Знатоком по умолчанию surefile плагин запускает тесты в изолированной (разветвленной) среде. Можно переопределить это поведение со следующей конфигурацией:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<forkMode>never</forkMode>
</configuration>
</plugin>
</plugins>
</build>
Если необходимо отладить тесты, Вы должны для использования этого отрывка конфигурации. Или Вы могли просто выполнить сборку знатока следующий путь:
$ mvn -Dmaven.surefire.debug tests
Это будет запускать отладчик на порте 5005.
Мой вопрос: какие преимущества обладают разветвляющуюся стратегию и почему выбран в качестве стратегии по умолчанию сборки знатока? Не не разветвляется стратегия более проста и поэтому должна использоваться в качестве значения по умолчанию (знаток является конвенцией по инструменту конфигурирования, праву)?
Мой вопрос: какие преимущества имеет стратегия forking и почему она выбрана в качестве стратегии по умолчанию для maven build?
По умолчанию Surefire форкает ваши тесты, используя только JAR с манифестом. IMO, основные преимущества заключаются в том, что:
Разве стратегия без форков не является более простой и поэтому должна использоваться по умолчанию?
Прямая для чего? Легкой отладки внутри IDE? Я полагаю, что это не было первоначальным намерением (и я предпочитаю подключать удаленный отладчик, если возникает необходимость, и держать основной процесс Maven в безопасности).