Статьи

Интеграционные тесты с Maven

Реализация модульных тестов с помощью maven — это нечто обычное, и большинство из нас знакомы со структурой проекта и с тем, где находятся модульные тесты.

Однако интеграционные тесты — это другой случай, и в большинстве случаев они предъявляют довольно разные требования. Например, нормально, чтобы ваши модульные тесты работали с h2 в базе данных памяти, но когда дело доходит до интеграционных тестов и сложных запросов , лучше всего их выполнять в реальной реляционной базе данных, такой как используемая в производстве.

Учитывая приведенный выше пример, есть вероятность, что наши интеграционные тесты могут иметь разные конфигурации и зависимости.

Поэтому наши цели для наших интеграционных тестов — отделить их от других тестов и выполнить их отдельно.

Что касается нашей структуры maven в исходном каталоге, у нас есть главная папка и тестовая папка.

Таким же образом мы добавим дополнительный каталог под названием ‘it’. Каталог ‘it’ будет содержать каталог java для наших источников java и каталог ресурсов. Та же самая структура с тестовым каталогом.

Затем мы должны дать инструкции maven по созданию нашего кода и добавлению его в наши тестовые источники.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
<plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>build-helper-maven-plugin</artifactId>
                    <version>1.5</version>
                    <executions>
                        <execution>
                            <id>add-test-source</id>
                            <phase>process-resources</phase>
                            <goals>
                                <goal>add-test-source</goal>
                            </goals>
                            <configuration>
                                <sources>
                                    <source>src/it/java</source>
                                </sources>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>

Используя плагин build helper maven, мы можем указать maven добавить дополнительные исходные каталоги тестов в нашу сборку.

Следующий шаг — дать команду maven запустить наши модульные тесты. Для этого мы будем использовать maven failsafe плагин .

Плагин Failsafe предназначен для запуска интеграционных тестов, а плагин Surefire — для модульных тестов. Имя (failsafe) было выбрано как потому, что оно является синонимом верного огня, так и потому, что оно подразумевает, что при неудаче оно делает это безопасным способом.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-failsafe-plugin</artifactId>
                <version>2.15</version>
                <executions>
                    <execution>
                        <id>integration-test</id>
                        <goals>
                            <goal>integration-test</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>verify</id>
                        <goals>
                            <goal>verify</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

Затем для выполнения интеграционных тестов мы должны выполнить.

1
mvn verify

Как и ожидалось, наши интеграционные тесты проводятся отдельно.

Подводя итог, мы хотим отделить интеграционные тесты от наших модульных тестов. Также мы хотим, чтобы они запускались отдельно. Это может быть достигнуто с помощью отказоустойчивого плагина maven.
Вы можете найти пример проекта на github .

Опубликовано на Java Code Geeks с разрешения Эммануила Гкациоураса, партнера нашей программы JCG. Смотрите оригинальную статью здесь: Интеграционные тесты с Maven

Мнения, высказанные участниками Java Code Geeks, являются их собственными.