测试我的 Quarkus 应用程序时如何使用内存中的 H2 数据库?

How can use an in-memory H2 database when testing my Quarkus application?

我计划使用 PostgreSQL 作为我的 Quarkus 应用程序的数据库,但我希望在我的测试中方便地使用 H2。

有没有办法让我完成这样的壮举?

Quarkus 提供 H2DatabaseTestResource 作为测试过程的一部分启动内存中的 H2 数据库。

您需要将 io.quarkus:quarkus-test-h2 添加为 test 范围内的依赖项,并使用 @QuarkusTestResource(H2DatabaseTestResource.class) 注释您的测试。 你还需要有类似的东西:

quarkus.datasource.url=jdbc:h2:tcp://localhost/mem:test
quarkus.datasource.driver=org.h2.Driver

src/test/resources/application.properties

为了让应用程序使用 PostgreSQL 作为其常规的一部分 运行,quarkus-jdbc-postgresql 应该是一个依赖项并且

quarkus.datasource.url=jdbc:postgresql://mypostgres:5432
quarkus.datasource.driver=org.postgresql.Driver

应该设置在src/main/resources/application.properties

更新

从版本 1.13 开始,当 quarkus-jdbc-h2 在类路径上且未提供 URL 配置时,Quarkus 可以在开发和测试模式下自动启动 H2。 有关详细信息,请参阅 this

您可以在application.properties文件中使用以下配置来使用h2数据库

    quarkus.datasource.jdbc.url=jdbc:h2:mem:default
    quarkus.datasource.driver=org.h2.Driver
    quarkus.datasource.username=admin
    quarkus.hibernate-orm.database.generation=drop-and-create