java - Spring Boot + 集成测试

标签 java spring spring-boot integration-testing

我正在尝试为 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-testtest 维护一个单独的目录

最佳答案

  • 您不需要创建任何其他带有注释的类 SpringBootApplication
  • 使用内存数据库(例如 H2)运行集成测试是一个很好的做法。您可以在 test 目录内的 resources 文件夹中创建一个新的 application-test.properties 文件。为了使用覆盖属性,您可以使用 test 配置文件运行测试。为了使用test配置文件运行测试,可以使用@ActiveProfiles
  • 您可以将集成测试保留在与单元测试相同的 test 目录中,但它们可以位于单独的包中

关于java - Spring Boot + 集成测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58614947/

相关文章:

使用 RestTemplateBuilder 的 Spring Boot RestTemplate 基本身份验证

spring-boot - 如何在 Spring Boot 应用程序中 Autowiring SimpleJpaRepository?

java - 使用Maven部署Spring-Boot项目并进一步导入到其他项目中

java - Spring Boot JPA不会使用save方法更新记录

java - 如何使用Java将XML文件读入二维数组

java - 如何将匿名类(不是实例)作为参数传递给在 Java 中期望类型为类的方法

java - 返回二维数组的索引

java - Spring Boot 使用自定义表进行身份验证

java - 使用 Xcode5 编写 Java 代码

java - 为什么 Spring 框架不记录 Autowiring Setter 注入(inject)?