本測試demo基於Spring框架測試,這幾個月也是剛剛接觸Spring的項目。若是不對的地方請多諒解。web
一、建立測試類,添加註解spring
@RunWith(SpringRunner.class)
@SpringBootTest
二、 添加本身要測試Controller做爲成員變量,同時將咱們本身的Mock類添加做爲成員變量,目的是經過它來調用咱們的api。咱們本身的mock中引用的是MockMvc這個類,在org.springframework.test.web.servlet包下面。
在咱們本身封裝mock中的構造函數中來啓動controller
public MockMvcCore(Object... controllers) {
if (mockMvc == null) {
mockMvc = MockMvcBuilders.standaloneSetup(controllers).build();
}
}
三、編寫咱們本身的調用測試方法
一、調用時候須要MockHttpServletRequestBuilder類,經過它來獲取咱們的請求方式:put,get,post,delete。直接點的方式就有這些方法,參數爲咱們的url地址。
MockMvcRequestBuilders.get(url)
二、MockHttpServletRequestBuilder.params(parameters);這個方法來設置咱們的參入的參數,參數爲Map類型;其中還有不少的方法,能夠進行設置咱們的請求內容。
mockHttpServletRequestBuilder.contentType(MediaType.APPLICATION_JSON);
mockHttpServletRequestBuilder.content(requestBody);
三、發起請求 ResultActions resultActions = mockMvc(就是MockMvc類).perform(mockHttpServletRequestBuilder);
四、拿到請求的結果 MvcResult result = resultActions.andReturn();這個時候就拿到結果了,是總體的結果。
五、最後拿到api相應的返回內容 result.getResponse().getContentAsString();
通常項目中都是要封裝起來的以上的過程,是我從項目的封裝分析處理的也就是沒有面向對象的一個順序。下面就是按照上面步驟的一個測試api方法。
@Test
public void test() throws Exception{
MockMvc m = MockMvcBuilders.standaloneSetup(myController).build();
MockHttpServletRequestBuilder builder = MockMvcRequestBuilders.get("myUrl");
MultiValueMap<String, String> parameters = new LinkedMultiValueMap<String, String>();
parameters.add("參數字段名","參數字段值");
builder.params(parameters);
ResultActions actions = m.perform(builder);
MvcResult result = actions.andReturn();
String content = result.getResponse().getContentAsString();
}
大體就這麼一個簡單過程,封裝起來就能夠靈活應用了。也是第一次用Mock寫測試,還請諒解。api