Я написал простой тестовый метод с JUnit 5:
public class SimlpeTest {
@Test
@DisplayName("Some description")
void methodName() {
// Testing logic for subject under test
}
}
Но когда я бегу mvn test
, у меня появляется:
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running SimlpeTest
Tests run: 0, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.001 sec
Results :
Tests run: 0, Failures: 0, Errors: 0, Skipped: 0
Так или иначе, surefire не узнал этот тестовый класс. Мой pom.xml
выглядит так:
<properties>
<java.version>1.8</java.version>
<junit.version>5.0.0-SNAPSHOT</junit.version>
</properties>
<dependencies>
<dependency>
<groupId>org.junit</groupId>
<artifactId>junit5-api</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
<repositories>
<repository>
<id>snapshots-repo</id>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<updatePolicy>always</updatePolicy>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
</configuration>
</plugin>
</plugins>
</build>
Есть идеи, как это сделать?
Ответы:
На
maven-surefire-plugin
сегодняшний день JUnit 5 полностью не поддерживается . Есть открытый вопрос о добавлении этой поддержки в SUREFIRE-1206 .Таким образом, вам необходимо использовать настраиваемого поставщика . Один из них уже разработан командой JUnit; из руководства пользователя необходимо добавить
junit-platform-surefire-provider
поставщика иTestEngine
реализацию для нового API:Также не забудьте объявить
junit-jupiter-api
зависимость с областью действияtest
:источник
maven-surefire-plugin v2.21.0
отлично работает сjunit-jupiter-engine v5.2.0
иjunit-platform-surefire-provider v1.2.0
Обновление 2
Проблема исправлена в плагине Maven Surefire v2.22.0.
Новая версия доступна в центральном репозитории Maven.
Maven
Gradle
Обновить
Как отметил Мариан , последняя версия JUnit 5 Platform Surefire Provider (1.2.0) поддерживает последнюю версию Maven Surefire Plugin (2.21.0) :
пример
pom.xml
TestScenario.java
Вывод (mvn clean install)
Самый простой способ до сегодняшнего дня:
источник
Из документации JUnit 5 :
Дополнительно вы можете прочитать в
maven-surefire-plugin
документации :Этого достаточно, чтобы запустить тесты JUnit 5:
В моем пространстве GitHub я добавил рабочий образец проекта maven, который вы можете просмотреть / клонировать.
URL: https://github.com/ebundy/junit5-minimal-maven-project
источник
Я столкнулся с этой проблемой с JUnit5 и Maven, но также заметил, что даже если в качестве зависимости был добавлен только junit-jupiter-engine, тесты будут выполняться в одних проектах, а не в других. . И я как бы вижу тот же образец в комментариях здесь: в комментарии @Alex выше вы можете видеть, что у него нет никаких проблем, даже с более ранними версиями surefire / junit / platform.
Почесав голову некоторое время, я понял, что те проекты, в которых тесты не запускались, были теми, в которых имена методов тестирования не содержали слова «test». Хотя это не предусмотрено http://maven.apache.org/surefire/maven-surefire-plugin/examples/inclusion-exclusion.html
Другими словами: просто с
этот
НЕ будет запускаться, тогда как
БУДЕТ бежать!
Этот выпуск разворачивается как матрешка ...
В любом случае, +1 для @Mikhail Kholodkov, обновленный ответ которого устраняет все проблемы сразу!
источник
В августе 2019 года я столкнулся с той же проблемой, о которой спрашивал здесь: Maven молча не может найти тесты JUnit для запуска . Эти ответы привели меня в правильном направлении, но я обнаружил, что вы можете решить проблему еще более кратко. Я скопировал свое решение из примера проекта Maven JUnit5 .
Начиная с JUnit 5.5.1 и
maven-surefire-plugin
2.22.2, вам не нужно добавлятьjunit-platform-surefire-provider
зависимость. Достаточно указать эту зависимость и один плагин в вашемpom.xml
:источник
В дополнение, также работает surefire 2.22.0 + junit 5.2.0 + платформа 1.2.0. Прилагается рабочий файл для справки:
источник
junit-vintage-engine
зависимости, и все мои тесты были написаны для JUnit 4.В моем случае это было из-за TestNG в пути к классам ( SUREFIRE-1527 ). Groovy 2.5.5 POM принес его с
groovy-testng
модулем.Указанный вручную провайдер тестовой среды (как описано на https://maven.apache.org/surefire/maven-surefire-plugin/examples/providers.html ) решил проблему:
источник
<dependency>
в<dependencies>
вашей выборке кода.Есть открытая проблема для surefire 2.20
У меня работает с surfire 2.19 + junit-platform- * 1.0.3
источник
У меня была аналогичная проблема, из-за которой Surefire распознавал нулевые тесты.
Моя проблема оказалась связана со следующим (из документации JUnit 5.1.0 / maven ):
Я пытался использовать последние версии Surefire (2.21.0) и junit-platform-surefire-provider (1.1.0), и это не сработало (ни в Java 8, ни в 9)
Возврат к Surefire 2.19.1 решил мою проблему.
В соответствии с этой проблемой исправление будет включено в версию 1.2.0 junit-platform-surefire-provider (в настоящее время доступно только как SNAPSHOT).
источник
Одна вещь, которую я заметил, мне удалось заставить это работать:
ClinicCalendarShould
не подбирается mavenClinicCalendarTest
ДЕЙСТВИТЕЛЬНО подбирается mavenИтак, если мне не хватает какой-либо конфигурации или параметра или чего-то еще в плагине surefire, по умолчанию вам нужно назвать свои тестовые классы XXXTest.
источник
Обновление до
maven-surefire-plugin:2.20
запускает тесты Junit5 без проблем.Но использую
M6
версию на Junit5.источник
В моем случае плагин surefire не получил правильную версию для jupiter-engine / api. И это было даже при запуске Maven 3.6.1 и surefireplugin версии 2.22.2!
Теперь моя конфигурация плагина surefire выглядит так:
Более того, мне пришлось форсировать эти версии:
Похоже, 5.5.2 была связана с неправильной версией платформы 1.3.2 вместо 1.5.2 в моем случае.
Все тесты JUnit5 теперь подобраны. Даже с 2.22.0 плагина surefire этого не произошло!
Надеюсь, это поможет...
источник
Я столкнулся с одной
junit5
и той же проблемой, иmaven-surefire
тесты терпели неудачу. Однако всеjunit4
шло нормально. У меня сработала комбинация ниже, я не добавляю управление версиями. Используйтеjunit-bom
для управления зависимостями. С помощьюspring-boot
2.1.4
Обязательно обновитесь до последней версии eclipse
источник