运行 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
,因此它显然也忽略了控制台路径。我大概可以通过添加另一个 属性.
来控制它
如果我 运行 正在使用 @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
,因此它显然也忽略了控制台路径。我大概可以通过添加另一个 属性.