原创不易,请多多支持!对软件技术感兴趣的童鞋请关注我,后续技术分享更精彩。
背景
springboot项目,有时需要对工程中的controller接口单元测试,而不仅仅只是service/dao层,在交互测试前更完整的验证接口的可用性。
本文介绍springboot项目中,controller接口Junit单元测试方法,以备后续参考。
集成
项目引入依赖包
org.springframework.boot spring-boot-starter-test test
测试controller类
@RestController@RequestMapping("/sys")@Api(tags = "系统应用管理")@Slf4jpublic class SysAppController { @ApiOperation(value = "获取系统应用信息") @RequestMapping(value = "/info/get",method = RequestMethod.GET) public DefaultResponseVo getSysApp(Integer sysId, HttpServletRequest request){ Assert.notNull(sysId,"sysId parameter is not allowed empty."); log.info("invoke getSysApp controller api..."); return DefaultResponseVo.success("SUCCESS"); }}
单元测试类
@SpringBootTest@RunWith(SpringRunner.class)@Slf4jpublic class SysAppControllerTest { @Autowired SysAppController sysAppController; private MockMvc mockMvc; @Before public void setup(){ // 将测试的controller添加到mockMvc中,支持多个参数入参 mockMvc = MockMvcBuilders.standaloneSetup(sysAppController).build(); } @Test public void testGetSysApp() throws Exception { //get api test. MvcResult mvcResult = mockMvc.perform(MockMvcRequestBuilders.get("/sys/info/get") .contentType(MediaType.APPLICATION_JSON_UTF8_VALUE) .param("sysId","1")) .andExpect(MockMvcResultMatchers.status().isOk()) .andDo(MockMvcResultHandlers.print()) .andReturn() ; String content = mvcResult.getResponse().getContentAsString(); Assert.hasLength(content); //post api test. /*MvcResult mvcResult2 = mockMvc.perform(MockMvcRequestBuilders.get("/sys/info/get") .contentType(MediaType.APPLICATION_JSON_UTF8_VALUE) .content(JSON.toJSONString(postBodyParams))) .andExpect(MockMvcResultMatchers.status().isOk()) .andDo(MockMvcResultHandlers.print()) .andReturn() ;*/ }}
执行验证