运行 SpringBootTest 时访问 H2 控制台

Accessing H2 Console While Running SpringBootTest

如果我 运行 正在使用 @SpringBootTest 进行测试,有什么方法可以访问 H2 控制台吗?我有一个访问 H2 数据库的测试(成功),但是如果我想自己检查数据库,我该怎么做?

我从 运行 开始测试 webEnvironment=DEFINED_PORT 并且 http://localhost:8080/ responds to HTTP, but there's nothing http://localhost:8080/h2-console/ 仍然以 404 响应。

我尝试通过向 application.properties:

添加值来显式打开控制台
spring.h2.console.enabled=true
spring.h2.console.path=/h2

好像没有效果。在 /h2-console/h2 处仍然是 404。

H2 控制台似乎是通过自动配置进入的,所以我使用 -Ddebug 打开了自动配置报告,尽管在 application.properties 中打开了启用标志,我还是可以看到它被视为关闭:

H2ConsoleAutoConfiguration: 
      Did not match:
          - @ConditionalOnProperty (spring.h2.console.enabled=true) did not find property 'enabled' (OnPropertyCondition)
      Matched:
         - @ConditionalOnClass found required class 'org.h2.server.web.WebServlet'; @ConditionalOnMissingClass did not find unwanted class (OnClassCondition)
         - found WebApplicationContext (OnWebApplicationCondition)

似乎某些机制正在覆盖值或忽略来自 application.properties 的值,而 运行 测试。

Spring Boot Test 不启动控制台吗?有什么办法可以说服它这样做吗?

好的,我能够使用以下注释(在 Kotlin 中)让它出现: @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT, properties = arrayOf("spring.h2.console.enabled=true"))

即便如此,控制台仍位于 /h2-console,因此它显然也忽略了控制台路径。我大概可以通过添加另一个 属性.

来控制它