Почему мои интеграционные тесты не запускаются при вызове команды "mvn test"?
В настоящее время мои интеграционные тесты запускаются только при запуске mvn install
, Я хотел бы, чтобы они побежали, когда я делаю mvn test
,
мой <pluginManagement>
раздел содержит:
<pluginManagement>
<plugins>
...
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.18.1</version>
<executions>
<execution>
<id>integration-test</id>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
...
</pluginManagement>
Как я могу сделать интеграционные тесты, когда я ставлю только цель test
?
2 ответа
На самом деле есть специальные фазы для запуска интеграционных тестов:
- pre -gration-test - настроить тестовую среду.
- интеграционный тест - запустить тесты.
- post -gration-test - остановить интеграционную тестовую среду.
- проверить - проверить результаты.
Они запускаются последовательно, поэтому, если вы позвоните
mvn integration-test
и это терпит неудачу, фаза постинтеграционного тестирования не будет вызвана.
Но если вы хотите вызвать его на этапе "тест", просто переместите тесты на соответствующий этап:
<plugins>
...
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.18.1</version>
<executions>
<execution>
<id>integration-test</id>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
<phase>test</phase>
</execution>
</executions>
</plugin>
</plugins>
В отличие от модульных тестов, интеграционные тесты не выполняются по умолчанию. Вам нужно будет создать отдельный профиль в вашем pom.xml с конфигурацией, связанной с тестами интеграции, и использовать этот профиль при указании цели. Например:
<profiles>
<profile>
<id>integration-test</id> // name of the profile
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.9.1</version>
<executions>
<execution>
<id>add-integration-test-source</id>
<phase>generate-test-sources</phase>
<goals>
<goal>add-test-source</goal>
</goals>
<configuration>
<sources>
<source>src/integration/java</source> // location where your code related to integration tests are present
</sources>
</configuration>
</execution>
<execution>
<id>add-integration-test-resources</id>
<phase>generate-test-resources</phase>
<goals>
<goal>add-test-resource</goal>
</goals>
<configuration>
<resources>
<resource>
<directory>src/integration/resources</directory> // location where resources related to your integration tests are present
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.19</version>
<configuration>
<failIfNoTests>false</failIfNoTests>
<redirectTestOutputToFile>true</redirectTestOutputToFile>
</configuration>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
Теперь для запуска интеграционных тестов вы можете выполнить команду maven следующим образом:
mvn clean install -P интеграция-тест
Здесь опция -P используется для указания профиля, а интеграционный тест - это имя профиля, которое мы создали ранее в pom.xml.