执行集成测试时,取决于环境的不同数据库配置

时间:2019-06-18 15:04:47

标签: spring spring-boot gradle

我想在执行集成测试时切换测试数据库配置。目前,我使用配置文件“ it”在开发模式下使用数据库。当我在Jenkins CI上执行集成测试时,我想使用另一个配置文件,例如'jenkins-it'。我不想使用内存数据库(我使用Postgresql)。 我对Jenkins的测试是由Gradle使用以下命令启动的:gradlew test

这是我注释集成测试类的方式:

@RunWith(SpringRunner::class)
@DataJpaTest
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
@ActiveProfiles("it")
public MyClassIT {
    @Test
    ...
}

它可以在开发中使用,因为它使用了我的'application-it.yaml'和定义的开发数据源。这是'application-it.yaml'的内容:

spring:
  datasource:
    url: "jdbc:postgresql://localhost:5432/mfttest?currentSchema=audit"
    username: "testuser"
    password: "testuser"
  jpa:
    hibernate:
      ddl-auto: create-drop
    show-sql: true
    properties:
      hibernate:
        format_sql: true
  liquibase:
    enabled: false

在Jenkins CI上,如何切换到Jenkins数据源使用'application-jenkins-it.yaml'?

1 个答案:

答案 0 :(得分:0)

我认为这里的常用方法是使用application-local.yaml,除了常规application.yaml(或其他配置文件)外,它还包含“开发”环境配置。在“开发”模式下,您可以使用本地配置文件运行应用程序或进行测试。

您不将application-local.yaml文件提交到源代码管理(如果使用git,则使用gitignore)。这样,您可以拥有2个单独的配置。这就是我们的方法,我认为到处都可以做到这一点。

此外,您可以使用testcontainers来在任何地方运行集成测试,而不必担心数据库和所有其他依赖性。