Как запустить интеграционные тесты JUnit 5 с помощью плагина Maven Failsafe?

плагин Mail Failsafe не найдет мои интеграционные тесты JUnit 5, Когда я запускаю команду mvn clean failsafe:integration-test, хотя он может найти файлы.

у меня есть junit-jupiter-api и junit-jupiter-engine как зависимости тест:

<properties>
    <junit.jupiter.version>5.0.1</junit.jupiter.version>
</properties>

<dependencies>
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-api</artifactId>
        <version>${junit.jupiter.version}</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-engine</artifactId>
        <version>${junit.jupiter.version}</version>
        <scope>test</scope>
    </dependency>
</dependencies>

мои интеграционные тесты названы правильно (после **/*IT.java, **/IT*.java или **/*ITCase.java что включено по умолчанию отказоустойчивым и исключено по умолчанию Surefire).

есть ли способ, которым я могу использовать тесты JUnit 5 с Безотказная?

2 ответов


обратите внимание, что от документация JUnit 5 : junit-platform-surefire-provider больше не следует использовать:

из-за выпуска Surefire 2.22.0, в junit-platform-surefire-provider от команды JUnit было устарел и будет прекращен в последующем выпуске В JUnit Платформы.

кроме того, вы также можете прочитать в maven-surefire-plugin документация :

Использование JUnit 5 Платформа

чтобы начать работу с платформой JUnit, вам нужно добавить хотя бы один TestEngine реализация вашего проекта. Например, если вы хотите напишите тесты с Юпитером, добавьте тестовый артефакт junit-jupiter-engine к зависимостям в POM

поэтому вы должны указать этот test зависимость :

<properties>
    <junit-jupiter.version>5.2.0</junit-jupiter.version>
</properties> 

<dependencies>
     [...]
     <dependency>
         <groupId>org.junit.jupiter</groupId>
         <artifactId>junit-jupiter-engine</artifactId>
         <version>${junit-jupiter.version}</version>
         <scope>test</scope>
     </dependency>
     [...] 
</dependencies>

и maven-failsafe-plugin декларация может быть такой же простой, как:

<build>
    <plugins>           
        <plugin>
            <artifactId>maven-failsafe-plugin</artifactId>
            <version>2.22.0</version>
        </plugin>
    </plugins>
</build>  

Edit: этот ответ был правильным перед maven-failsafe-plugin:2.22.0. См.davidxxxответом для идеального и самого современного решения.


на maven-failsafe-plugin в настоящее время не поддерживает JUnit 5, из коробки.

, как с maven-surefire-plugin, вы можете запустить тесты JUnit 5 с помощью maven-failsafe-plugin путем указания зависимости от org.junit.platform:junit-platform-surefire-provider:1.0.1 С более ранней версии maven-failsafe-plugin:2.19.1.

он не работает с текущей версией 2.20 отказоустойчивого (таким же образом, что surefire имеет ошибку) из-за OutOfMemory.

см. ниже пример конфигурации плагина:

<properties>
    <junit.platform.version>1.0.1</junit.platform.version>
</properties>

<plugin>
    <artifactId>maven-failsafe-plugin</artifactId>
    <version>2.19.1</version>
    <dependencies>
        <dependency>
            <groupId>org.junit.platform</groupId>
            <artifactId>junit-platform-surefire-provider</artifactId>
            <version>${junit.platform.version}</version>
        </dependency>
    </dependencies>
</plugin>

вы можете найти полный пример этой работы (и неудачной) на GitHub. Чтобы проверить, что он работает, вы можете запустить mvn clean failsafe:integration-test.