Я пытаюсь создать тестовые примеры JUnit для контроллеров Spring MVC, используя API junit и spring-test. Поскольку в моем приложении много определений компонентов, я использовал LazyInitDefaultBeanDefinitionDocumentReader
и написал файл CustomContextLoader
.
Мой пример тестового класса будет:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(loader=com.xyz.CustomXmlContextLoader.class,
locations={"file:///D:/web-module/src/test/resources/conf/application-config-controller-test.xml"})
@WebAppConfiguration
public class LoginControllerTest {
@Autowired
private WebApplicationContext wac;
private MockMvc mockMvc;
@Test
public void testShowForm_forgetUserID() throws Exception {
System.out.println("webappcontext::"+wac);
mockMvc = MockMvcBuilders.webAppContextSetup(wac).build();
mockMvc.perform(get("/login.form")).andExpect(status().isOk());
}
}
Здесь, если я выполняю приведенный выше код, wac не подключается автоматически и возвращает null. Но если я уберу loader=com.xyz.CustomContextLoader
из @ContextConfiguration
, все будет нормально.
Мне нужно иметь как ленивую загрузку, так и MockMvc для тестирования. Я что-то упустил? Есть ли лучшее решение?
@WebAppConfiguration
бесполезным. ОбычноWebDelegatingSmartContextLoader
используется для загрузки классов (при использовании@WebAppConfiguration
). Возможно, вы захотите взглянуть на это для своей пользовательской реализации. - person M. Deinum   schedule 05.06.2014