Java中的简单Controller Rest端点测试

时间:2019-03-08 16:38:25

标签: java unit-testing spring-restcontroller

我被赋予了在Java Controller中创建基本端点的任务。我想到了以下。

@RestController
public class SimpleController{

@RequestMapping("/info")
public String displayInfo() {
    return "This is a Java Controller";
}

@RequestMapping("/")
public String home(){
    return "Welcome!";
}

}

令人讨厌的是,它是如此简单,但是我想不起来如何创建ControllerTest,我只需要测试代码即可。所有这些都可以正常工作并经过手动测试。有什么帮助吗?谢谢

1 个答案:

答案 0 :(得分:1)

要通过http进行完整的系统集成测试,可以使用TestRestTemplate:

@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
public class HttpRequestTest {

    @LocalServerPort
    private int port;

    @Autowired
    private TestRestTemplate restTemplate;

    @Test
    public void greetingShouldReturnDefaultMessage() throws Exception {
        assertThat(this.restTemplate.getForObject("http://localhost:" + port + "/",
                String.class)).contains("Welcome!");
    }
}

要在不实际启动Web服务器的情况下进行更轻松的测试,可以使用Spring MockMVC:https://spring.io/guides/gs/testing-web/

@RunWith(SpringRunner.class)
@WebMvcTest
public class WebLayerTest {

    @Autowired
    private MockMvc mockMvc;

    @Test
    public void shouldReturnDefaultMessage() throws Exception {
        this.mockMvc.perform(get("/"))
                .andDo(print())
                .andExpect(status().isOk())
                .andExpect(content().string(containsString("Hello World")));
    }
}