Как поменять местами сервисы во время тестирования Selenium UI? - PullRequest
3 голосов
/ 09 марта 2011

Мы хотим ввести тестирование Selenium в нашем процессе сборки maven.К счастью, существует масса информации о том, как это сделать, но мне сложно понять, как справиться с одним из наших требований.

Чтобы разделить слои тестирования, мы хотим использоватьмакет сервисных объектов для тестов пользовательского интерфейса.Все эти объекты уже определены в файлах конфигурации Spring, которые мы используем в модульных тестах.Подключить эти сервисы легко в модульном тесте (мы используем @ContextConfiguration), но я не знаю, как справиться с этим переключением конфигурации, когда мы развертываем войну на Jetty для тестов Selenium.Используете:

  • Spring MVC 3.0
  • Maven
  • Hudson

1 Ответ

2 голосов
/ 09 марта 2011

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

Самое простое решение: разработайте условные включения в контексте приложения Spring:

<import resource="services-${env}.xml"/>

где $ {env} происходит от pom.xml:

<properties>
    <env>prd</env> <!-- or test depending on build profile -->
</properties>

Не забудьте включить ресурсы фильтрация и использовать профили сборки .

при выполнении тестов Selenium. Переключение может быть сделано во время сборки Maven или с помощью другого инструмента фильтрации. Оба файла (services-prd.xml и services-test.xml) определяют одинаковые bean-компоненты (одинаковые интерфейсы и / или идентификаторы), но, конечно, последний использует фиктивные реализации.

Best (IMHO): если вам нужно изменить реализацию во время выполнения, AOP + JMX будет отличным решением. Просто оберните свои реальные услуги аспектами и, в зависимости от флага (доступного через JMX), используйте реальные услуги или издевательства. Очень чистый и неинвазивный.

...