2015-09-15 2 views
0

Я хотел бы написать единичный (компонентный) тест для ресурса REST моего веб-приложения. Этот тест должен ориентироваться на открытый интерфейс REST и проверять его поведение путем выдачи запросов и проверки ответов.Arquillian, Spring WebApplicationInitializer, встроенный Tomcat

Веб-приложение настроено без использования web.xml и applicationContext.xml с использованием пружины WebApplicationInitializer. Это отлично работает, когда я просто запускаю приложение на моем (Tomcat) сервере.

При запуске теста Arquillian архив ShrinkWrap развертывается на встроенном сервере Tomcat. Поскольку встроенный сервер работает с classpath моего веб-приложения, он также находит мой класс WebApplicationInitializer. Это проблематично, поскольку оно загружает множество зависимостей и должно быть просто активировано для теста.

Как отключить мой WebApplicationInitializer (и предоставить альтернативную реализацию) в тесте?

При использовании файлов конфигурации XML это соответствует скрытию реальных файлов конфигурации и использованию конкретной (пустой?) Конфигурации, которая используется в тесте.

ответ

0

Я работал над этой проблемой, просто отключив экземпляр WebApplicationInitializer, используя статическое поле, которое я установил в методе Аркиллиана @Deployment.

Возможно, вы также захотите заглянуть в metadata-complete, что заставляет Tomcat не ссылаться на часть Spring, которая делегирует экземпляр WebApplicationInitializer.

+0

Да, это одна из проблем использования встроенного контейнера. Вы также можете использовать управляемый/удаленный контейнер. – LightGuard

Смежные вопросы