Maven fail-safe не выполняет тесты
я прочесал StackOverflow и многие другие сайты, нашел много других связанных сообщений и следовал всем указанным предложениям, но в конце концов,failsafe пропускает мои тесты.
мой тест JUnit находится здесь:
myModule/src/main/test/java/ClientAccessIT.java
Я пропуская surefire потому что в этом модуле нет модульных тестов:
<!-- POM snippet -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
и я пытаюсь запустить интеграционные тесты с ФС:
<!-- POM snippet -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<executions>
<execution>
<id>run-tests</id>
<phase>integration-test</phase>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
</plugin>
однако, когда Я бегу!--4--> Я вижу так:
[INFO] --- maven-failsafe-plugin:2.14.1:integration-test (run-tests) @ rest-services-test ---
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Results :
Tests run: 0, Failures: 0, Errors: 0, Skipped: 0
я провел последние 4 1/2 часа, очищая, любая помощь была бы оценена. Единственное, что еще стоит упомянуть, это то, что у меня есть груз настройка и снос контейнера Tomcat. Кто-нибудь видит вопиющую проблему?
D
7 ответов
вам нужно переименовать тестовый класс.
вы можете найти имена плагин ищет по умолчанию в документация, как указано @acdcjunior:
по умолчанию плагин Failsafe автоматически включает все тестовые классы со следующими шаблонами подстановочных знаков:
- "
**/IT*.java
"- включает все свои подкаталоги и все имена файлов java, которые начинаются с "IT".- "
**/*IT.java
" - включает все свои подкаталоги и все имена файлов java, которые заканчиваются на "IT".- "
**/*ITCase.java
"- включает все свои подкаталоги и все имена файлов java, которые заканчиваются на "ITCase".
У меня была похожая проблема. Если нет никаких тестовых классов, скомпилированных в целевые / тестовые классы, проверьте файл pom и убедитесь, что упаковка не является "pom".
для многомодульных проектов Дочерний проект должен иметь плагин, объявленный следующим образом,
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
</plugin>
версия наследуется от родительского pom. Без выше определенного, плагин в Родительском pom в одиночку не будет работать.
ваши тесты не находятся в каталоге источников тестов по умолчанию src/test / java. См.:
https://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html
myModule/src/main/test/java / ClientAccessIT.java
должно быть:
myModule/src/test/java / ClientAccessIT.java
вы также можете обновить файл pom (если вы действительно хотите, чтобы тесты жили в main), чтобы включить:
<build>
<testSources>
<testSource>
<directory>src/main/test</directory>
</testSource>
</testSources>
</build>
У меня также была аналогичная проблема, но мне нужен был элемент упаковки "pom". Убедитесь, что исходные файлы теста компилируются и добавляются в файл .../target / test-classes папка с использованием maven-compiler-plugin:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven.compiler.version}</version>
<executions>
<execution>
<phase>test-compile</phase>
<goals>
<goal>testCompile</goal>
</goals>
</execution>
</executions>
</plugin>
у меня была такая же проблема, и я попробовал несколько предложенных вариантов здесь. Я разрабатываю приложение Spring Boot с помощью JUnit 5. К сожалению, ни один из моих интеграционных тестов (расположен в src/test/java
и далее *TestIT.java
) были подобраны, независимо от реклама плагин сделать это. Я пытался!--20-->переход на 2.18.1, 2.19.1 и попробовал оба удаления <executions>
и <configuration>
разделы, чтобы попытаться использовать даже плагин по умолчанию функциональность, но не повезло.
я, наконец, изменил версию на последнюю (на момент написания) на 2.22.0 и viola. Вот конфигурация, которую я добавил <build><plugins>
раздел моего пом. И даже лучше, мне не нужно добавлять исполнения, которые определяют integration-test
и verify
цели, которые вы видите большинство людей включают; failsafe выполняет их по умолчанию. Я также включил свою конфигурацию плагина surefire, так как я использую ее для выполнения модульных тестов во время test
этап жизненный цикл maven.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.0</version><!--$NO-MVN-MAN-VER$-->
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.22.0</version><!--$NO-MVN-MAN-VER$ -->
</plugin>
и просто для хорошей меры, чтобы сказать surefire и failsafe использовать JUnit 5, Я включаю это в свой :
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<scope>test</scope>
</dependency>
Eclipse отображает предупреждение (желтое волнистое подчеркивание) под тегом версии, следовательно, включение <!--$NO-MVN-MAN-VER$ -->
ошибка. Я уверен, что есть лучший способ справиться с этим, но это работает для меня в данном случае.
для ускорения тестирования данной конфигурации, и чтобы избежать пройти через все более ранних этапов жизненного цикла до test
, integration-test
илиverify
фаз, я использовал следующие команды для быстрой проверки:
-
mvn failsafe:integration-test
(работает только интеграционные тесты) -
mvn surefire:test
(работает только модульные тесты) - (я, очевидно, запускаю весь жизненный цикл, когда он считается)
надеюсь, это кому-то поможет. Ура!
У меня была несколько похожая проблема. Мои интеграционные тесты не проходили. Мой проект - это многомодульный проект spring boot. И моя ошибка заключалась в том, что я добавил Maven-failsafe-plugin в родительский POM. После возни со многими опциями я поместил failsafe-плагин в модуль pom, где присутствовали все мои интеграционные тесты, которые решили мою проблему.