使用MockMvc測試SpringMVC Controller

MockMvc 是springTest提供的對SpringMvc提供的測試工具。這樣可以讓單元測試不僅僅侷限於對Dao和Service 層的測試。同時,也可以測試Controller層。豐富的單元測試的功能。測試時不用頻繁重啓servlet容器,簡化了測試操作。

MockMvc需要ServletContext來模擬用戶的請求和相應。


首選,需要在測試類頭部添加一下Annotation

@WebAppConfiguration
@RunWith(SpringJUnit4Cla***unner.class)
@ContextConfiguration(locations = { "classpath:spring/applicationContext.xml" })

@WebAppConfiguration 用來引入servletContext

接下來就可以在junit中編寫測試類了。

demo 1 有請求頭、無參數的get請求

樣例代碼如下:

@Test
	public void 測試類() throws Exception {
		ResultActions reaction=this.mockMvc.perform(MockMvcRequestBuilders.get("/service/test/testController")
				.accept(MediaType.APPLICATION_JSON)//返回值接收json
				.header("Timestamp", "1496656373783")
				.header("AppId", "1003"));
		reaction.andExpect(MockMvcResultMatchers.status().isOk());
		MvcResult mvcResult =reaction.andReturn();
		System.out.println(mvcResult.getResponse().getContentAsString());
	}


demo 2 有請求頭、有請求體的post請求

樣例代碼如下:

@Test
	public void 測試類() throws Exception {
		PolicyInfoRequest request=new PolicyInfoRequest();
		request.setAnnualPremium(100);
		request.setPolicyNo("Test-222");
		request.setPolicyRebate(0.28f);
		request.setPolicyType(1);
		request.setRebateAmount(28f);
		String jsonRequest=JSON.toJSONString(request);
		ResultActions reaction =this.mockMvc.perform(MockMvcRequestBuilders.post("/policy/info/save")
				.contentType(MediaType.APPLICATION_JSON)//請求體時json
				.header("Timestamp", "1496656373791")
				.header("AppId", "1003")
				.content(jsonRequest));
		reaction.andExpect(MockMvcResultMatchers.status().isOk());
		MvcResult mvcResult =reaction.andReturn();
		System.out.println(mvcResult.getResponse().getContentAsString());
	}


以上兩個例子就能基本覆蓋解決使用springtest的MockMvc對Controller進行單元測試的需求。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章