junit と spring-test api を使用して、Spring MVC コントローラーの JUnit テスト ケースを作成しようとしています。アプリには多くの beanddefinitions があるため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 の両方が必要です。何か不足していますか?より良い解決策はありますか?