Тестирование интеграции после развертывания в 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 параметр.

Короче говоря, ваша сборка должна сделать что-то вроде:

  1. Запустить юнит-тесты через MUnit (unit-test исполнение во время test фаза)
  2. Разверните ваше приложение на Cloudhub (deploy исполнение во время pre-integration-test фаза
  3. Запустите интеграционные тесты через MUnit (it-test исполнение во время integration-test фаза)
  4. Удалить приложение из Cloudhub (undeploy исполнение во время post-integration-test фаза

Если вы не знакомы с фазами и выполнениями, прочитайте Введение в жизненный цикл сборки

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