【问题标题】:How can use an in-memory H2 database when testing my Quarkus application?在测试我的 Quarkus 应用程序时如何使用内存中的 H2 数据库?
【发布时间】:2019-07-30 12:27:56
【问题描述】:

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

有什么方法可以完成这样的壮举吗?

【问题讨论】:

    标签: quarkus


    【解决方案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 了解更多信息。

    【讨论】:

    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 2022-01-23
      • 2020-09-03
      • 1970-01-01
      • 2020-03-20
      • 1970-01-01
      • 1970-01-01
      • 2019-03-03
      • 2016-03-17
      • 1970-01-01
      相关资源
      最近更新 更多