2016-01-18 3 views
5

В настоящее время в нашем проекте мы используем Spring Integration для интеграции многих сервисов и некоторых конечных точек, связанных с протоколом.Испытание конца до конца в нескольких приложениях Spring Boot

Проект представляет собой многопользовательские приложения для загрузки Spring, в производстве будет развернуто более одного исполняемого баночки.

Возникает вопрос:

  1. Как запустить встык тест, который должен выполняться пересечь некоторые из этих приложений, я должен запустить один за другим вручную? Перед тем, как использовать приложения none-Spring-Boot, я могу использовать плагин Maven tomcat7 для завершения этой работы (развернуть войн во встроенный tomcat и запустить его в pre-integration-test), теперь как запустить все связанные приложения до Я запускаю свой тест. Предположим, что сейчас я не использую Docker/Vagrant.

    Похожий вопрос находится на StackOverflow, End to end integration test for multiple spring boot applications under Maven

    Как автоматически запустить тест End2End?

  2. В тесте интеграции весной, когда-то мне нужно высмеять конечную точку http, поэтому я написал простой тестовый пакет Controller для архивирования этой цели, но я хочу запустить его на другом порту, что делает его более похожим внешний ресурс. Как запустить различные классы @SpringBootApplicaiton в разных портах одновременно в тесте для этой цели?

Я использую последнюю версию Maven, Java 8, Spring Boot 1.3.1.RELEASE.

Спасибо.

+0

По второму вопросу, я обнаружил, что Spring предоставляет «MockRestServiceServer», который может издеваться над целевым удаленным REST API для архивирования этой цели в тестах. – Hantsy

ответ

0

На самом деле, весенний ботинок поставляется с опорой для сервлетов embedded. Один из них - точно Tomcat. Значение по умолчанию включено для org.springframework.boot:spring-boot-starter-web.

С org.springframework.boot:spring-boot-starter-test и его @SpringApplicationConfiguration и @WebIntegrationTest вы можете достичь ваши требования, даже при случайном port.

Пожалуйста, обратитесь к Спринг загрузке Reference Manual для получения дополнительной информации:

Чтобы изменить порт, который вы можете добавить свойства среды в @WebIntegrationTest в разделённых двоеточием или приравнивает разделенные пары имя-значение, например, @WebIntegrationTest ("server.port: 9000"). Кроме того, вы можете установить для свойств server.port и management.port значение 0, чтобы выполнить ваши интеграционные тесты с использованием случайных портов.

С тем, что ваш @SpringBootApplicaiton будет развернут в этом встроенном Tomcat, и ваш тест может получить доступ к запущенным службам/контроллерам.

Примечание: не имеет значения, имеет ли ваше приложение Spring Boot весовые функции интеграции. Поведение одно и то же: встроенные тесты сервлетов и интеграционные тесты против @Value("${local.server.port}").

+2

Я хорошо знаю о '@ IntegrationTest' и' @ WebIntegrationTest' в приложениях Spring Boot. Может быть, мое выражение смутило вас, я не английский.Мне нужно запустить мой автономный тест end2end перед запуском нескольких приложений Spring Boot (случай 1 в моем вопросе). – Hantsy

Смежные вопросы