Можно ли использовать MockMvc без SpringJUnit4ClassRunner?

Я хочу использовать MockMvc без SpringJUnit4ClassRunner.

   public static void main(String[] args) {
     WebApplicationContext wac = ...;
     MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(wac).build();
   }

Поскольку main не вызывается springcontainer, как мне создать WebApplicationContext?

Возможно ли что-то вроде следующего неработающего псевдокода?

 WebApplicationContext wac = new WebApplicationContext("classpath./service-context.xml");

person jack    schedule 17.07.2014    source источник


Ответы (1)


Существует два основных способа создания экземпляра MockMvc:

  1. Из WebApplicationContext, загруженного либо через Spring TestContext Framework (например, с использованием @ContextConfiguration и @WebAppConfiguration), либо вручную.
  2. В автономном режиме с использованием класса @Controller.

Оба они задокументированы в Параметры настройки в главе Тестирование справочного руководства.

Чтобы создать WebApplicationContext вручную, создайте экземпляр GenericWebApplicationContext и загрузите определения bean-компонентов из XML-файлов следующим образом:

GenericWebApplicationContext context = new GenericWebApplicationContext();
new XmlBeanDefinitionReader(context).loadBeanDefinitions(/* XML config files */);
context.refresh();

Или из @Configuration классов вот так:

GenericWebApplicationContext context = new GenericWebApplicationContext();
new AnnotatedBeanDefinitionReader(context).register(/* @Configuration classes */);
context.refresh();

Обратите внимание, что вы также захотите настроить и установить MockServletContext в context.

С уважением,

Сэм (автор Spring TestContext Framework)

person Sam Brannen    schedule 17.07.2014