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

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

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

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

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

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

Ответы [ 2 ]

1 голос
/ 11 сентября 2010

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

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

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

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

Ресурсы

1 голос
/ 10 сентября 2010

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

Обновление

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

...