我被赋予了在Java Controller中创建基本端点的任务。我想到了以下。
@RestController
public class SimpleController{
@RequestMapping("/info")
public String displayInfo() {
return "This is a Java Controller";
}
@RequestMapping("/")
public String home(){
return "Welcome!";
}
}
令人讨厌的是,它是如此简单,但是我想不起来如何创建ControllerTest,我只需要测试代码即可。所有这些都可以正常工作并经过手动测试。有什么帮助吗?谢谢答案 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")));
}
}