【发布时间】:2020-10-30 09:14:31
【问题描述】:
我正在使用 Spring Boot 创建一个 REST API 并在我的控制器上编写一些单元测试。
我知道在spring中注入bean的推荐方式是构造函数注入。
但是当我将@SpringBootTest 注释添加到我的测试类时,我无法用构造函数注入我的控制器类,我发现自己不得不使用@Autowired。
有一些解释,是否有另一种方法可以通过SpringBootTest 使用构造函数注入。
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
class PersonControllerTest {
@LocalServerPort
private int port;
@Autowired
private PersonController controller;
@Autowired
private TestRestTemplate restTemplate;
@Test
public void greetingShouldReturnDefaultMessage() throws Exception {
assertThat(this.restTemplate.getForObject("http://localhost:" + port + "/cvtech/Persons/",
String.class)).contains("content");
}
@Test
public void contextLoads() throws Exception {
assertThat(controller).isNotNull();
}
@Test
void findAllByJob() {
}
}
【问题讨论】:
-
你不希望 Spring 和 DI 用于单元测试。将其用于集成测试。如果是集成测试,我建议你看看 MockMVC
-
谢谢,但我认为 SpringBootTest 两者都做。
标签: java spring spring-boot junit5