在春季启动中对@ControllerAdvice进行junit测试

时间:2019-07-17 18:18:41

标签: java junit spring-batch spring-boot-test

我正在尝试测试RestController的有效性。这是我的controller

@RequestMapping(value="/my-data",method=RequestMethod.GET, produces= {MediaType.APPLICATION_JSON_UTF8_VALUE})
public ResponseEntity<?> doSomething(@Validated @RequestParam (value = "id")@Size(min=6,max=6) String id){

    //some logic here
} 

我有一个ControllerAdvice来处理ConstraintViolationException

    @ExceptionHandler({ ConstraintViolationException.class })
    public ResponseEntity<?> handleConstraintViolation(ConstraintViolationException ex, WebRequest request) {

        //exception handling here
return  ResponseEntity.status(400).body("My error Message here");

    } 

一切都很好。但是现在我试图编写单元测试用例,但是我的单元测试用例从不抛出ConstraintViolationException

我正在如下设置MockMvc

mvc = MockMvcBuilders.standaloneSetup(myController).setControllerAdvice(new MyControllerAdviceClass()).build();

测试用例为

@Test
public void testForConstrain() throws Exception {
    mvc.perform(get("/my-data")
            .param("id", "123"))
    .andExpect(status().isBadRequest());
}

但是该测试用例没有通过,因为未抛出ConstraintViolationException。不知道我在这里做错了什么。

0 个答案:

没有答案