使用 liquibase

问题描述

我想使用 liquibase 为 quarkus 中的本机测试使用一些数据填充数据库。目前我有三个配置文件prod dev test。 JVM 测试是成功的,但在构建原生应用程序时,原生测试失败(例如使用 -Dquarkus.profile=dev -Dquarkus.test.native-image-profile=test):

...
Caused by: org.postgresql.util.PsqlException: ERROR: relation "qrtz_locks" does not exist
...
Caused by: org.postgresql.util.PsqlException: ERROR: relation "qrtz_triggers" does not exist

另外我想指出的是,我想对我拥有的每个配置文件testproddev)使用配置文件 test 运行本机测试.我用来运行本机测试的命令:

./gradlew clean build testNative -Dquarkus.package.type=native -Dquarkus.native.container-build=true -Dquarkus.native.builder-image=quay.io/quarkus/ubi-quarkus-native-image:20.3.0-java11 -Dquarkus.profile=<profile> -Dquarkus.test.native-image-profile=test

build.gradle

...
implementation 'io.quarkus:quarkus-quartz'
implementation 'org.liquibase:liquibase-core'
...
testImplementation 'io.quarkus:quarkus-liquibase'
testImplementation 'org.testcontainers:testcontainers'
testImplementation 'org.testcontainers:postgresql'
...

application.properties

quarkus.datasource.db-kind=postgresql

application-dev.properties

quarkus.datasource.jdbc.url=jdbc:postgresql://localhost:5432/db
quarkus.datasource.username=db
quarkus.datasource.password=db

application-test.properties

quarkus.liquibase.migrate-at-start=true
quarkus.liquibase.change-log=<path-to-changelog>

对于 JVM 测试,liquibase 使用石英表在 testcontainers 中填充数据库,但对于本机测试,它没有。

如果没有 testNative,应用程序构建到本机并且运行得非常好。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)