Здесь необходимо запустить контейнер и развернуть приложение из сценария сборки, прежде чем запускать тесты в зависимости от развернутого приложения. Это типичная потребность в интеграционных тестах, сквозных / функциональных тестах, тестах пользовательского интерфейса.
Проблема в том, что мы не можем просто «запустить и забыть» запуск контейнера и запустить тестовое задание / цель. Нам нужно подождать, пока приложение будет развернуто, прежде чем запускать тесты, и это займет некоторое время. Чтобы быть уверенным, что мы сможем запустить тесты, когда все будет готово, сборка должна запустить контейнер и развернуть приложение блокирующим способом.
Это точно , о чем Груз . Cargo - это Java API для запуска / остановки вашего контейнера и развертывания приложения. Он обеспечивает логику, описанную выше, и может использоваться из Java, Ant или Maven.
Если вы используете Maven, жизненный цикл сборки уже включает в себя что-то для вас с фазой «интеграция-тест». Этот этап обычно используется для ... интеграционных тестов и включает этапы "pre-интеграционный тест" и "постинтеграционный тест". Здесь вы можете подключить цели грузовой старт / стоп. Если вы используете муравья, вы можете использовать задачу муравья груза.
Другая опция, основанная на maven, описана в Руководстве по настройке подключаемого модуля Mavan Jetty . Идея точно такая же, как и выше, за исключением того, что вы используете плагин пристани вместо груза, чтобы запустить причал во время «теста перед интеграцией» и остановить его во время «теста после интеграции».