Spring 3 - Тестирование контроллера @Autowired Servlet Context - PullRequest
13 голосов
/ 14 марта 2011

У меня есть контроллер со следующей аннотацией

@Autowired
ServletContext servletContext;

, которая, кажется, работает нормально и правильно подключает контекст сервлета.Однако, когда я пытаюсь запустить junit, я получаю следующее исключение:

org.springframework.beans.factory.BeanCreationException: Ошибка при создании bean-компонента с именем 'ControllerTest': сбой внедрения зависимостей с автоматической связью;вложенное исключение: org.springframework.beans.factory.BeanCreationException: не удалось автоматически связать поле: javax.servlet.ServletContext

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

Любой совет будет очень полезен.

Ответы [ 2 ]

10 голосов
/ 14 марта 2011

Как утверждает @bluefoot, вы должны использовать MockServletContext.Чтобы это работало, вместо автоматического подключения ServletContext можно реализовать ServletContextAware.Spring заметит это при запуске в контексте веб-приложения и внедрит ServletContext, а в тесте JUnit вы можете вызвать метод setServletContext, чтобы установить MockServletContext.

6 голосов
/ 14 марта 2011

Ну, у вас не должно быть реального ServletContext внутри тестового окружения junit.

Вы должны использовать MockServletContext .

...