Как запустить интеграционные тесты 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.