2021年10月20日
控制层测试用例
1.定一个基类
@RunWith(SpringRunner.class)
@SpringBootTest(classes = SpringbootBssPMApplication.class)
@AutoConfigureMockMvc
@Slf4j
public class BaseControllerTest {
MockMvc mockMvc;
@Before
public void init() {
log.info("开始测试...");
}
@After
public void after() {
log.info("测试结束...");
}
}
2.filter处理中文字符
public class Utf8Filter extends OncePerRequestFilter {
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
throws ServletException, IOException {
response.setCharacterEncoding(StandardCharsets.UTF_8.toString());
filterChain.doFilter(request, response);
}
}
3.具体测试类
3.1注入controller,初始化mockMvc
@Autowired
UserController userController;
@Before
public void setup(){
mockMvc = MockMvcBuilders.standaloneSetup(userController)
.addFilter(new Utf8Filter())
.build();
}
3.2写具体的测试方法
@Test
public void get() throws Exception {
String url = "/baf/user/{id}";
mockMvc.perform(MockMvcRequestBuilders.get(url, 1)
.accept(MediaType.APPLICATION_JSON))
.andExpect(MockMvcResultMatchers.status().isOk())
.andDo(MockMvcResultHandlers.print())
.andReturn();
}
3.3完整测试类
public class UserControllerTest extends BaseControllerTest{
@Autowired
UserController userController;
@Before
public void setup(){
mockMvc = MockMvcBuilders.standaloneSetup(userController)
.addFilter(new Utf8Filter())
.build();
}
@Test
public void get() throws Exception {
String url = "/baf/user/{id}";
mockMvc.perform(MockMvcRequestBuilders.get(url, 1)
.accept(MediaType.APPLICATION_JSON))
.andExpect(MockMvcResultMatchers.status().isOk())
.andDo(MockMvcResultHandlers.print())
.andReturn();
}
@Test
public void list() throws Exception {
mockMvc.perform(MockMvcRequestBuilders.post("/baf/user/list")
.param("pageNum", "1")
.param("pageSize", "20")
.param("username", "")
.accept(MediaType.APPLICATION_JSON))
.andExpect(MockMvcResultMatchers.status().isOk())
.andDo(MockMvcResultHandlers.print())
.andReturn();
}
@Test
@Transactional
public void add() throws Exception {
JSONObject userInfo = new JSONObject();
userInfo.put("username", "王武");
mockMvc.perform(MockMvcRequestBuilders.post("/baf/user/")
.content(userInfo.toJSONString())
.contentType(MediaType.APPLICATION_JSON_VALUE)
.accept(MediaType.APPLICATION_JSON))
.andExpect(MockMvcResultMatchers.status().isOk())
.andDo(MockMvcResultHandlers.print())
.andReturn();
}