我正在尝试为 Spring Boot 项目编写集成测试。不幸的是,我对实现感到困惑。
尝试了以下示例代码片段
@RunWith(SpringRunner.class)
@SpringBootTest(classes = MainApplication.class)
@AutoConfigureMockMvc
public class PropertyControllerIT {
@Autowired
private MockMvc mockMvc;
@Test
public void sample_test() throws Exception {
this.mockMvc.perform(post("/property")).andExpect(status().is2xxSuccessful());
}
}
问题
- 我需要有一个单独的
MainClass
@SpringBootApplication
注解支持集成测试? - 我们是否创建模拟数据库或覆盖数据库配置。如果是,我们如何覆盖配置
- 我们是否应该为类似于
java
的集成测试或类似integration-test
的test
维护一个单独的目录
最佳答案
- 您不需要创建任何其他带有注释的类
SpringBootApplication
。 - 使用内存数据库(例如 H2)运行集成测试是一个很好的做法。您可以在
test
目录内的resources
文件夹中创建一个新的application-test.properties
文件。为了使用覆盖属性,您可以使用test
配置文件运行测试。为了使用test
配置文件运行测试,可以使用@ActiveProfiles
。 - 您可以将集成测试保留在与单元测试相同的
test
目录中,但它们可以位于单独的包中
关于java - Spring Boot + 集成测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58614947/