Spring 3 - Тестирование контроллера @Автоматический контекст сервлета

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

@Autowired
ServletContext servletContext;

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

org.springframework.beans.factory.BeanCreationException: ошибка при создании bean с именем "ControllerTest": не удалось выполнить инъекцию автоуведомленных зависимостей; Вложенное исключение - org.springframework.beans.factory.BeanCreationException: Не удалось создать поле autwire: javax.servlet.ServletContext

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

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

Ответы

Ответ 1

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

Ответ 2

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

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