有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java控制台打印语句在Spring Boot microservice的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) 个答案

  1. # 1 楼答案

    您可以使用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调用之前退出