Я пытаюсь написать интеграционные тесты для контроллера в нашем весеннем приложении mvc. Контроллер вызывает класс службы, который, в свою очередь, вызывает дао для чтения/записи данных из репозитория. DAO необходимо найти некоторую конфигурацию. Конфигурационный компонент определен в WEB-INF/applicationContext.xml.Напишите тесты Junit для приложения Spring MVC, которое внутренне полагается на ContextLoader.getCurrentWebApplicationContext()
Я использую что-то вроде этого:.
Конфигурация конфигурации = (Конфигурация) ContextLoader.getCurrentWebApplicationContext() getBean ("конфигурации");
private String namespace = config.getProperty ("someproperty");
Свойства хранятся в zookeeper, поэтому я не использую артефакты управления свойствами весны.
Проблема заключается в том, что при запуске теста JUnit ContextLoader.getCurrentWebApplicationContext() всегда возвращает null.
Я до сих пор смотрела на следующие подходы:
1. Подход Теда Янга (только поиск Google для Spring MVC интеграции тестов Ted молодых)
2. https://github.com/SpringSource/spring-test-mvc
3. этот сайт .. вопросы/8464919/блок-тестирование-а-сервлет-что-зависит-на-пружинах-webapplicationcontextutils-getre
4. Использование Selenium/JWebunit
5. http://confluence.highsource.org/display/Hifaces20/Hifaces20+Testing+package+-+testing%2C+tracing+and+debugging+web+applications+with+Jetty
1 не решает эту проблему. WebApplicationContext остается нулевым
2 утверждает, что поддержка WebApplicationContext будет доступна весной 3.2
3. Я не понимаю этого. Где я могу получить testApplicationContext и getServletContext()?
4. Я не хочу идти этим путем, так как это полностью проверка Blackbox.
5. В настоящее время я смотрю на 5. Но для этого требуется запуск контейнера сервлетов. Нет ли другой альтернативы?
Буду признателен за любую помощь, которую вы можете предоставить.
Благодаря PixalSoft
@Ted Молодые SO не позволили мне закончить то, что я был saying.With погрузчик = MockWebApplicationContextLoader, это не должно быть доступно в ContextLoader по умолчанию точно так, как ведет себя Spring ContextLoader когда webapp инициализируется сервером-сервлетом? Есть ли что-то особенное, что мне нужно сделать, чтобы получить дескриптор в MockWebApplicationContextLoader? Инъекция объекта config работает для одноэлементных объектов. Но все не может быть одноточечным. Передача объекта конфигурации в каждом конструкторе звучит слишком утомительно. На данный момент я создал класс, у которого есть статический объект конфигурации, который автоматически передается через метод setter. Я рассмотрю ApplicationContextAware.Many thx
Привет, Спасибо, что ответили. Мы не можем хранить свойства в файле свойств, потому что мы находимся в распределенной среде, и по этой причине нам нужно хранить свойства в zookeeper. Кроме того, я не думаю, что использование ContextLoader.getCurrentWebApplicationContext() должно помешать тестированию приложения. – user1373927