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