Spring Boot Junit4单元测试MockMvc的使用
1.Controller代码如下:
@RestController
@RequestMapping("/vss")
@Api(value = "usermanagement parameter",description = "usermanagement controller interface")
public class UserController {
private static final Logger logger = LoggerFactory.getLogger(UserController.class);
@Autowired
private RoleService roleService;
@Autowired
private UserService userService;
@Autowired
private OperatorService operatorService;
@Autowired
private SystemParameterService systemParameterService;
@GetMapping("/user/getUserInfoByPage")
@ApiOperation(value = "get user data by page", notes = "show user data by pagination parameter")
public ResultBean getUserInfoByPage(@RequestParam("index")int pageIndex,@RequestParam("size")int pageSize){
ResultBean resultBean=new ResultBean();
try{
resultBean.setData(userService.getUserByPage(pageIndex,pageSize));
}catch (Exception e){
resultBean.setCode(ResponseCodeType.FAULT.getCode());
resultBean.setMessage(ResponseCodeType.FAULT.getCodeDescription());
logger.error("user controller exception",e);
}
return resultBean;
}
@PostMapping("/operator/delete/{operatorId}")
@ApiOperation(value = "delete operator by id ", notes = "delete operator by id")
@Transactional(rollbackOn = Exception.class)
public ResultBean deleteOperator(@PathVariable("operatorId") long operatorId){
ResultBean resultBean=new ResultBean();
try {
operatorService.deleteOperator(operatorId);
}catch (Exception e){
resultBean.setCode(ResponseCodeType.FAULT.getCode());
resultBean.setMessage(ResponseCodeType.FAULT.getCodeDescription());
logger.error("delete operator interface happen error",e);
}
return resultBean;
}
@PostMapping("/opeartor/save")
@ApiOperation(value="save opeartor ", notes="save opeartor")
public ResultBean saveOperator(@RequestBody RequestOperatorData requestOperatorData){
ResultBean resultBean=new ResultBean();
try{
boolean saveOperatorResult= operatorService.saveOperator(requestOperatorData);
if(!saveOperatorResult){
resultBean.setCode(ResponseCodeType.WARNING.getCode());;
resultBean.setMessage("operator name has exists!");
logger.debug("operator name has exists.roleName:{}",requestOperatorData.getOperatorName());
}
}catch(Exception e){
resultBean.setCode(ResponseCodeType.FAULT.getCode());
resultBean.setMessage(ResponseCodeType.FAULT.getCodeDescription());
logger.error("save operator interface happen error",e);
}
return resultBean;
}
2.Test代码:
@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc
public class UserControllerTest {
//启用Web上下文
@Autowired
private WebApplicationContext webApplicationContext;
private MockMvc mockMvc ;
@Before
public void setUp() throws Exception {
// mockMvc = MockMvcBuilders.standaloneSetup(new UserController()).build();
//使用上下文构建MockMvc
mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();
}
@After
public void tearDown() throws Exception {
}
@Test
public void getUserInfoByPage() throws Exception{
//执行请求(使用GET请求)
MvcResult mvcResult = mockMvc.perform(MockMvcRequestBuilders.get("/vss/user/getUserInfoByPage").param("index","1").param("size","10") //若无参数则不写param.
.accept(MediaType.APPLICATION_JSON_UTF8)).andReturn();
//获取返回编码
int status = mvcResult.getResponse().getStatus();
//获取返回结果
String content = mvcResult.getResponse().getContentAsString();
//断言,判断返回编码是否正确
Assert.assertEquals(200,status);
System.out.println("--------返回的json = " + content);
}
@Test
public void operatorDelete() throws Exception{
//执行请求(使用POST请求)
MvcResult mvcResult = mockMvc.perform(MockMvcRequestBuilders.post("/vss/operator/delete/{operatorId}",1).accept(MediaType.APPLICATION_JSON_UTF8)).andReturn();
//获取返回编码
int status = mvcResult.getResponse().getStatus();
//获取返回结果
String content = mvcResult.getResponse().getContentAsString();
//断言,判断返回编码是否正确
Assert.assertEquals(200,status);
}
@Test
public void opeartorSave() throws Exception{
//多个参数的传递
OperatorEntity operatorEntity=new OperatorEntity();
//创建新用户
RequestOperatorData requestOperatorData = new RequestOperatorData();
requestOperatorData.setCreatedBy("admin");
requestOperatorData.setOperatorId(1);
requestOperatorData.setOperatorName("test");
requestOperatorData.setOperatorType("1");
requestOperatorData.setUpdatedBy("admin");
//将参数转换成JSON对象
ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString(requestOperatorData);
//执行请求(使用POST请求,传递多个参数)
MvcResult mvcResult = mockMvc.perform(MockMvcRequestBuilders.post("/vss/opeartor/save").content(json).contentType(MediaType.APPLICATION_JSON)).andReturn();
//获取返回编码
int status = mvcResult.getResponse().getStatus();
//获取返回结果
String content = mvcResult.getResponse().getContentAsString();
//断言,判断返回编码是否正确
assertEquals(200,status);
}

浙公网安备 33010602011771号