Тестирование интеграции после развертывания в Mule
У меня есть приложение, для которого у меня есть набор интеграционных тестов, написанный с использованием Munit. Я внедряю это в CloudHub с помощью Jenkins.
Как выполнить тестовые примеры после развертывания?
Есть ли какой-либо инструмент командной строки, который я могу использовать, или это может быть сделано с помощью Maven или Jenkins?
1 ответ
Вы можете настроить сборку Maven для развертывания приложения Mule во время pre-integration-test
фаза, запустите ваши тесты во время integration-test
фаза и, возможно, отключить во время post-integration-test
фаза. Вы можете использовать что-то вроде:
<plugins>
...
<plugin>
<groupId>org.mule.tools.maven</groupId>
<artifactId>mule-app-maven-plugin</artifactId>
<version>1.1</version>
<extensions>true</extensions>
</plugin>
<plugin>
<groupId>org.mule.tools.maven</groupId>
<artifactId>mule-maven-plugin</artifactId>
<version>2.0</version>
<configuration>
<deploymentType>cloudhub</deploymentType>
<!-- muleVersion is the runtime version as it appears on the CloudHub interface -->
<muleVersion>3.7.0</muleVersion>
<username>myUsername</username>
<password>myPassword</password>
<redeploy>true</redeploy>
<environment>Production</environment>
</configuration>
<executions>
<execution>
<id>deploy</id>
<phase>pre-integration-test</phase>
<goals>
<goal>deploy</goal>
</goals>
</execution>
<execution>
<id>undeploy</id>
<phase>post-integration-test</phase>
<goals>
<goal>undeploy</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>com.mulesoft.munit.tools</groupId>
<artifactId>munit-maven-plugin</artifactId>
<version>${munit.version}</version>
<executions>
<execution>
<id>unit-test</id>
<phase>test</phase>
<goals>
<goal>test</goal>
</goals>
<configuration>
<munittest>.*-unit-test-suite.xml</munittest>
</configuration>
</execution>
<execution>
<id>it-test</id>
<phase>integration-test</phase>
<goals>
<goal>test</goal>
</goals>
<configuration>
<munittest>.*-integration-test-suite.xml</munittest>
</configuration>
</execution>
</executions>
<configuration>
<coverage>
<runCoverage>false</runCoverage>>
</coverage>
</configuration>
</plugin>
...
</plugins>
См. Документацию плагина Mule Maven для получения подробной информации о том, как настроить развертывание в CloudHub.
РЕДАКТИРОВАТЬ: поскольку вы используете MUnit для запуска своих тестов, вам нужно будет настроить плагин MUnit Maven для запуска интеграционных тестов, стараясь отличить их от возможных модульных тестов. См. Поддержка MUnit Maven. Ваши интеграционные тесты MUnit должны выполняться на integration-test
фаза. Если у вас возникли проблемы с настройкой вашей сборки, сообщите мне об этом в комментарии, и я внесу соответствующие изменения.
EDIT2: я обновил свой ответ, чтобы предоставить рабочий пример конфигурации MUnit Maven, способной выполнять как модульное, так и интеграционное тестирование.
Настроено 2 исполнения:
- Первый будет работать на
test
фаза и использовать только тесты MUnit, соответствующие.*-unit-test-suite.xml
регулярное выражение (черезmunittest
параметр) - Второй будет работать на
integration-test
и использовать только тесты, соответствующие.*-integration-test-suite.xml
регулярное выражение.
Затем вам нужно будет назвать свои модульные тесты и интеграционные тесты в соответствии с этими шаблонами, чтобы убедиться, что они запускаются в правильном порядке. Это пример, конечно, важно убедиться, что ваши юнит-тесты и интеграционные тесты дифференцированы и запущены в нужный момент - как это делается с помощью Maven Failsafe и Surefire Plugin с использованием соответственно *Test
а также *IT
классы.
Если у вас есть только интеграционные тесты, вы можете пропустить эту сложную конфигурацию и просто использовать выполнение интеграционного теста без munittest
параметр.
Короче говоря, ваша сборка должна сделать что-то вроде:
- Запустить юнит-тесты через MUnit (
unit-test
исполнение во времяtest
фаза) - Разверните ваше приложение на Cloudhub (
deploy
исполнение во времяpre-integration-test
фаза - Запустите интеграционные тесты через MUnit (
it-test
исполнение во времяintegration-test
фаза) - Удалить приложение из Cloudhub (
undeploy
исполнение во времяpost-integration-test
фаза
Если вы не знакомы с фазами и выполнениями, прочитайте Введение в жизненный цикл сборки