【问题标题】:Manually running flyway in quarkus testcontainers reactive在 quarkus 测试容器中手动运行 flyway 反应式
【发布时间】:2021-11-22 05:10:35
【问题描述】:

我有一个 quarkus 2.3.0.RC1 项目设置,使用响应式 postgres 作为与我的数据库的连接。

我的测试应用程序.yml

quarkus:
  datasource:
      db-kind: postgresql
      jdbc: false
      username:
      password:
      reactive:
        url:
        max-size: 20

这应该告诉 quarkus 生成一个 postgresql 的 testcontainer 实例。但是在此之前,我遇到了飞行路线迁移的问题。

flyway 使用 jdbc,因此我必须将这个类添加为包装器以允许它运行

@ApplicationScoped
public class RunFlyway {

  @ConfigProperty(name = "quarkus.datasource.reactive.url")
  String datasourceUrl;
  @ConfigProperty(name = "quarkus.datasource.username")
  String datasourceUsername;
  @ConfigProperty(name = "quarkus.datasource.password")
  String datasourcePassword;

  public void runFlywayMigration(@Observes StartupEvent event) {
      Flyway flyway = Flyway.configure()
          .dataSource("jdbc:" + datasourceUrl, datasourceUsername, datasourcePassword).load();
      flyway.migrate();
   
  }
}

然而,这似乎将我的main/resoruces/applciation.yml 内容作为属性,我可以忽略它,但我不知道如何以编程方式获取 quarkus 通过 testcontainers 创建的生成的 postgresql 实例的 url。这甚至可能吗?

【问题讨论】:

    标签: java junit quarkus flyway testcontainers


    【解决方案1】:

    原来问题实际上在于我的属性是如何被读取的

    作为测试,我将 main/applicaiton.yml 设置为仅针对特定配置文件(例如 application-live.yml)运行。像这样测试找不到属性,它加载正确并且url被成功注入

    【讨论】:

      猜你喜欢
      • 2020-07-11
      • 2021-05-21
      • 1970-01-01
      • 1970-01-01
      • 2017-01-13
      • 2021-01-01
      • 2020-01-02
      • 2020-04-22
      • 2018-09-21
      相关资源
      最近更新 更多