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