控制台打印语句在Spring Boot微服务中的Junit测试中不起作用

时间:2018-05-31 13:03:36

标签: java spring-boot junit

我正在尝试为Spring Boot微服务创建Junit测试。我需要查看执行操作的响应或结果。当我这样添加时,它不会在我的控制台中打印。

@Test
public void retrieveDetailsForCourse() throws Exception {

    Mockito.when(
            studentService.retrieveCourse(Mockito.anyString(),
                    Mockito.anyString())).thenReturn(mockCourse);

    RequestBuilder requestBuilder = MockMvcRequestBuilders.get(
            "/students/Student1/courses/Course1").accept(
            MediaType.APPLICATION_JSON);

    MvcResult result = mockMvc.perform(requestBuilder).andReturn();

    System.out.println(result.getResponse());

}

如何从结果中检索响应/结果?

1 个答案:

答案 0 :(得分:2)

您可以使用andDo(print())打印请求和响应控制台,例如:

MvcResult result = mockMvc.perform(requestBuilder)
   .andDo(print())
   .andReturn();

您可能还想为响应添加一些断言,例如:

MvcResult result = mockMvc.perform(requestBuilder)
   .andExpect(status().isOk())
   .andExpect(content().contentType(...))
   .andExpect(content().string("..."));

这是MockMvc测试的标准方法,但您的测试用例可能存在其他问题。使用andReturn()以及result.getResponse().getContentAsString() 应该打印出响应,这样如果您没有看到任何打印,那么:

  • 响应为空
  • perform()来电已引发异常,从而导致System.out来电之前退出。