Указания о том, как получить тестовую банку для запуска отдельной войны для тестирования (возможно, с грузом?)

Позвольте мне объяснить некоторые из моих ограничений.

У нас есть война, в которой есть служба CXF Soap и служба Spring MVC REST. Реализации CXF и Spring MVC находятся в отдельном банке и вносятся как зависимости. Служба REST имеет свои модульные тесты в своем проекте.

Мне было интересно, есть ли способ, выполняя что-то вроде «mvn clean test» в банке REST, настроить локальную версию войны, а затем запустить модульные тесты. Таким образом, при сборке чего-то вроде Hudson или выпуске релизов не нужно будет никаких обходных путей (таких как развертывание snapshot ear или запуск локальной войны вручную)? Я видел, как это делалось, когда испытания проводились в рамках войны с использованием грузов, но не когда испытания проводились отдельно от войны.

Прямо сейчас мы собираемся вынести тесты в отдельную банку, но это все еще не идеально, так как если что-то пойдет не так во время выпуска, это будет означать, что банка REST и война уже выпущены. Я бы предпочел сделать это вышеописанным способом, с тестами в том же проекте, что и служба REST.

Если у кого-то есть какие-либо указатели, документы или примеры, которые могут помочь с этим, мы будем признательны.


person AHungerArtist    schedule 09.09.2010    source источник
comment
Нет, вы не разобрались :) Вы как-то смешиваете модули, упаковки и это затрудняет понимание вопроса. Возможно, вам следует описать структуру проекта с помощью ASCII-дерева и объяснить, как вы хотите, чтобы все работало.   -  person Pascal Thivent    schedule 11.09.2010


Ответы (2)


Честно говоря, я не уверен, что понял все ограничения. В любом случае, рекомендуемый способ реализации интеграционных тестов с Maven — поместить их в отдельный модуль (это гораздо проще, особенно если в тестируемом модуле также есть модульные тесты), который зависит от войны/ушей под тест и чтобы:

  1. Запустите контейнер и разверните войну/ухо во время фазы pre-integration-test.
  2. Пусть Maven запустит тесты в течение integration-test
  3. Остановите контейнер в течение post-integration-test

Для шагов №1 и №3 я лично использую Cargo. Для шага 2 предпочтительным вариантом является использование модуля Maven Failsafe. (потому что он не остановит сборку, если тест не пройден). По крайней мере, это то, что я использую, и я использовал приведенные ниже ресурсы для создания своей установки.

Альтернативным подходом может быть запуск/остановка встроенного контейнера из тестов. Например, это возможно с Jetty, см. Встраивание Jetty и Сервлеты модульного тестирования с Jetty.

Ресурсы

person Pascal Thivent    schedule 11.09.2010
comment
Я рассмотрю это немного подробнее на этой неделе, когда смогу, а затем вернусь и назову один из этих ответов правильным. Спасибо за помощь. - person AHungerArtist; 13.09.2010

Maven также имеет этап интеграционного тестирования. Используйте maven-jetty-plugin для запуска контейнера и развертывания приложения. Затем запустите интеграционный тест.

Обновлять

Тесты не могут находиться в файле jar. Плагин Maven surefire не смог их запустить. Тесты являются частью проекта, в котором вы запускаете интеграционный тест. Протестированный файл войны можно установить в качестве библиотеки зависимостей. Он будет загружен, развернут, и вы запустите интеграционные тесты.

person amra    schedule 09.09.2010
comment
Разве это не работает, только если тесты с банкой? Или я чего-то там не вижу? - person AHungerArtist; 10.09.2010
comment
Извините, я имел в виду войну, а не банку. В том-то и дело, что мои испытания должны быть отделены от войны (что означает быть в банке). Таким образом, похоже, что это не сработает для меня. - person AHungerArtist; 10.09.2010
comment
Вы можете пройти интеграционный тест как часть военного проекта. Это еще проще настроить. Вы должны настроить плагин jetty для запуска на этапе интеграции и настроить плагин surefire, какой тест следует использовать для тестирования интеграции. - person amra; 10.09.2010
comment
Полагаю, я не ясно выражаюсь. Баночка отделена от войны и содержит тесты. Что я хотел бы сделать, так это каким-то образом заставить банку создать локальную версию войны, чтобы запустить ее тесты. - person AHungerArtist; 11.09.2010
comment
Я понимаю. Единственная возможность — настроить плагин Surefire. Взгляните, что позволяет это моджо: maven.apache.org/ plugins/maven-surefire-plugin/test-mojo.html Вы должны распаковать test-jar, а затем настроить testSourceDirectory. - person amra; 11.09.2010
comment
Я рассмотрю это немного подробнее на этой неделе, когда смогу, а затем вернусь и назову один из этих ответов правильным. Спасибо за помощь. - person AHungerArtist; 13.09.2010