SpringBoot单元测试示例2
1 package cn.coreqi.security.controller; 2 3 import org.junit.Before; 4 import org.junit.Test; 5 import org.junit.runner.RunWith; 6 import org.springframework.beans.factory.annotation.Autowired; 7 import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; 8 import org.springframework.boot.test.context.SpringBootTest; 9 import org.springframework.http.MediaType; 10 import org.springframework.test.context.junit4.SpringRunner; 11 import org.springframework.test.web.servlet.MockMvc; 12 import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; 13 import org.springframework.test.web.servlet.result.MockMvcResultMatchers; 14 import org.springframework.test.web.servlet.setup.MockMvcBuilders; 15 import org.springframework.web.context.WebApplicationContext; 16 17 @RunWith(SpringRunner.class) //如何运行测试用例,使用SpringRunner执行测试用例。 18 @SpringBootTest //指定当前类为测试用例类 19 @AutoConfigureMockMvc 20 public class UserControllerTests { 21 @Autowired 22 private WebApplicationContext wac; 23 24 @Autowired 25 private MockMvc mockMvc; 26 27 @Before //@Before标注的方法会在每一个测试用例执行之前执行 28 public void setup(){ 29 mockMvc = MockMvcBuilders.webAppContextSetup(wac).build(); 30 } 31 32 @Test 33 public void whenQuerySuccess() throws Exception { 34 //MockMvcRequestBuilders的get方法会模拟发出一个GET请求 35 mockMvc.perform(MockMvcRequestBuilders.get("/users") 36 .param("usernmae","fanqi") 37 .param("size","15") 38 .param("page","3") 39 .param("sort","id,desc") 40 .contentType(MediaType.APPLICATION_JSON_UTF8)) 41 .andExpect(MockMvcResultMatchers.status().isOk()) //期望服务器端返回的信息 42 .andExpect(MockMvcResultMatchers.jsonPath("$.length()").value(3)) 43 .andReturn().getResponse().getContentAsString(); 44 } 45 }