【问题标题】:Different database configurations depending on environment when executing integration tests执行集成测试时根据环境的不同数据库配置
【发布时间】:2019-11-01 06:33:36
【问题描述】:

我想在执行集成测试时切换我的测试数据库配置。目前,我使用配置文件“它”在开发模式下使用数据库。当我在 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 上,如何切换以将我的“application-jenkins-it.yaml”与 Jenkins 数据源一起使用?

【问题讨论】:

    标签: spring spring-boot gradle


    【解决方案1】:

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

    您不会将 application-local.yaml 文件提交到源代码控制(如果您使用的是 git,则为 gitignore)。这样,您可以有 2 个单独的配置。我们就是这样做的,我认为几乎所有地方都是这样做的。

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

    【讨论】:

      猜你喜欢
      • 2018-03-22
      • 2019-11-24
      • 2011-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-24
      • 2017-07-09
      • 1970-01-01
      相关资源
      最近更新 更多