在测试我的 Quarkus 应用程序时如何使用内存中的 H2 数据库?
Posted
技术标签:
【中文标题】在测试我的 Quarkus 应用程序时如何使用内存中的 H2 数据库?【英文标题】:How can use an in-memory H2 database when testing my Quarkus application? 【发布时间】:2019-07-30 12:27:56 【问题描述】:我计划使用 PostgreSQL 作为我的 Quarkus 应用程序的数据库,但我希望在我的测试中使用 H2 更方便。
有什么方法可以完成这样的壮举吗?
【问题讨论】:
【参考方案1】: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 了解更多信息。
【讨论】:
我尝试在我的示例中使用这种方法,但失败了。它报告了连接超时。 ***.com/questions/57900569/…【参考方案2】:您可以在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
【讨论】:
以上是关于在测试我的 Quarkus 应用程序时如何使用内存中的 H2 数据库?的主要内容,如果未能解决你的问题,请参考以下文章