Реализация модульных тестов с помощью 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, являются их собственными. |
