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, где присутствовали все мои интеграционные тесты, которые решили мою проблему.