SoapUI Mock интегрирован в тест Maven - PullRequest
7 голосов
/ 20 марта 2012

Мне было интересно, как выполнить некоторые интеграционные тесты для WSClient. Мой проект построен с Maven.

Чтобы проверить инициализацию конфигурации и некоторые запросы, я подумал, что было бы неплохо запустить службу SoapUI Mock. Затем я вошел в эту конфигурацию, извлеченную из некоторых сообщений.

В моем pom.xml

    <plugin>
            <groupId>eviware</groupId>
            <artifactId>maven-soapui-plugin</artifactId>
            <version>4.0.1</version>
            <executions>
                <execution>
                    <id>StartupMock</id>
                    <configuration>
                        <projectFile>src/test/soapui/MyMock-soapui-project.xml</projectFile>
                        <outputFolder>${project.build.directory}/surefire-reports</outputFolder>
                        <junitReport>true</junitReport>
                        <host>http://127.0.0.1:8181</host>
                        <mockService>DataProviderMock</mockService>
                    </configuration>
                    <goals>
                        <goal>test</goal>
                    </goals>
                    <phase>test</phase>
                </execution>
            </executions>
        </plugin>

Мой MockService, называемый MyMock, должен был быть запущен на http://127.0.0.1:8181/somepath, где мой WSClient мог отправлять запросы. Но я не смог запустить макет во время фазы mvn test.

Это подходящий способ проверки клиентов WSC? В таком случае, где проблема или неправильная конфигурация?

РЕДАКТИРОВАТЬ: Там нет ошибки. Я не вижу насмешливого прослушивания этого порта 8181. Единственные сообщения, которые я вижу (из soapui.log):

2012-03-21 10:17:21,011 WARN  [SoapUI] Missing folder [D:\proyectos\everest-utils\everest-bridge\trunk\.\ext] for external libraries
2012-03-21 10:17:21,392 INFO  [DefaultSoapUICore] initialized soapui-settings from [C:\Users\rromero\soapui-settings.xml]
2012-03-21 10:17:23,205 INFO  [WsdlProject] Loaded project from [file:/D:/proyectos/everest-utils/everest-bridge/trunk/src/test/soapui/MyMock-soapui-project.xml]
2012-03-21 10:17:23,891 INFO  [SoapUITestCaseRunner] Running soapUI tests in project [DataProvider]
2012-03-21 10:17:23,894 INFO  [SoapUITestCaseRunner] Running Project [MyMock], runType = SEQUENTIAL
2012-03-21 10:17:23,900 INFO  [SoapUITestCaseRunner] Project [MyMock] finished with status [FINISHED] in 0ms

Заранее и всего наилучшего,

Ruben

1 Ответ

7 голосов
/ 21 марта 2012

Согласно http://www.soapui.org/Test-Automation/maven-2x.html вам нужно запустить цель mock вместо цели test.Измените свой раздел goal, чтобы вызвать цель mock:

    <plugin>
        <groupId>eviware</groupId>
        <artifactId>maven-soapui-plugin</artifactId>
        <version>4.6.1</version>
        <executions>
            <execution>
                <id>StartupMock</id>
                <configuration>
                    <projectFile>src/test/soapui/MyMock-soapui-project.xml</projectFile>
                    <outputFolder>${project.build.directory}/surefire-reports</outputFolder>
                    <junitReport>true</junitReport>
                    <host>http://127.0.0.1:8181</host>
                    <mockService>DataProviderMock</mockService>
                    <noBlock>true</noBlock>
                </configuration>
                <goals>
                    <goal>mock</goal>
                </goals>
                <phase>process-test-classes</phase>
            </execution>
        </executions>
    </plugin>

Еще два изменения:

  • Убедитесь, что тест запускается на этапе, предшествующем выполнениютесты, например, pre-integration-test или process-test-classes
  • Добавьте параметр noBlock с помощью true.

См., например, выше.

...