Интеграционные тесты, несколько контейнеров, несколько реализаций API и Maven. Какие-нибудь советы? - PullRequest
0 голосов
/ 23 апреля 2011

Как бы вы настроили следующее в Maven?Предположим, у меня есть 4 модуля:

  • data-access-api
  • data-access-impl-derby
  • data-access-impl-postgresql
  • data-access -интеграция-тесты

Предположим, я хочу иметь возможность проверить два контейнера:

  • arquillian-jbossas-ebedded-6
  • arquillian-glassfish-embedded-3.1

Для запуска моих интеграционных тестов мне нужен модуль 'data-access-api' и ровно одна реализаций.Я также хочу проверить ровно один контейнеров.Я могу придумать несколько способов заставить его работать, но все они имеют недостатки, и я даже не знаю, поддерживает ли Maven некоторые из них.

Я нашел следующее предложение добавить концепцию групп профилей вMaven, но, насколько я могу судить, ничего подобного еще не было добавлено:

http://docs.codehaus.org/display/MAVENUSER/Improvements+to+Profile+Activation+Deactivation

Концепция наличия группы взаимоисключающих профилей будет работать, но может стать неуправляемойдовольно быстро.Представьте себе 3 реализации и 3 контейнера.Было бы 9 возможных конфигураций профиля, хотя меня может заинтересовать только тестирование 3 или 4 возможных комбинаций.

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

  • gration-arquillian-glassfish-Embedded-data-access-accessgresql

Однако я не могу понять,способ сделать это, не дублируя мои интеграционные тесты.В моем модуле тестирования доступа к данным есть только интеграционные тесты.Я использую CDI для внедрения зависимостей, и тесты выполняются против API.Я могу запустить один и тот же набор тестов для каждой реализации.Это просто вопрос упаковки ровно одной реализации с API.

Сейчас я использую Maven 2.

1 Ответ

0 голосов
/ 23 апреля 2011

Как насчет помещения ваших интеграционных тестов в абстрактный класс и в отдельный модуль (что вы уже сделали) и создания производного класса, который создает экземпляр реализации и выполняет эти тесты.Это решило бы сначала реализовать тесты только один раз, потому что вы тестируете реализации на соответствие поведению вашего интерфейса.Может быть , это делает это немного яснее.Я бы сказал, что последнее, что вы предложили, будет наилучшим, так что ваш "gration-arquillian-glassfish-embedded-data-access-postgresql "будет содержать только один класс, который наследуется от вашего абстрактного класса, создает конкретный экземпляр и запускает тесты..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...