Почему мои интеграционные тесты не запускаются при вызове команды "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.

Другие вопросы по тегам