Quarkus 在测试时使用 h2 控制台访问内存中的 h2 数据库(h2 控制台作为 servlet)

问题描述 投票:0回答:1

我想在测试(测试调试)时使用 h2 控制台访问内存数据库。测试运行良好,h2 数据库似乎完成了它的工作。

为了启用 h2 控制台,我遵循了这个How to set H2 Database console url in the Quarkus Application.

然后我运行正常开发的应用程序时,控制台就可用了。它在 http://localhost:8082/h2/

下可用

但是在运行我的测试(使用 RestAssured)时,控制台不可用。我用仅停止线程的断点进行了尝试,我还尝试在其中一个测试中设置一个 while(true) 循环,这样测试就不会完成,然后我会尝试访问控制台,但都没有用。

在运行测试时访问 h2 控制台是否需要进行任何其他设置?

在application.yml中我还有以下内容

"%test":
  quarkus:
    datasource:
      db-kind: h2
      jdbc:
        driver: org.h2.Driver
        url: jdbc:h2:mem:test

我还尝试在 main/resources 和 test/resources 下添加 META-INF 文件夹和 web.xml。但我不确定你是否会这样做?

知道如何访问 h2 控制台进行测试吗?

也许在运行测试时没有加载 servlet?或者它可能会在不同的端口下运行?我不太确定是什么问题。

也许我需要在显式加载 servlet 的 TestProfiles 中添加代码?知道在哪里以及如何做到这一点吗?

maven h2 quarkus rest-assured
1个回答
0
投票

h2 控制台在同一个 JVM 中工作,它使用相同的 servlet 线程,这意味着如果你在你的休息服务中放置一个断点,它将暂停所有。因此调试时 h2 控制台将不可用。

您可以尝试运行第二个 spring boot 应用程序并从那里使用 h2 控制台检查https://stackoverflow.com/a/50039942/175554并检查Spring boot:无法登录 h2 控制台

© www.soinside.com 2019 - 2024. All rights reserved.