如果我使用@SpringBootTest
运行测试,是否有办法访问H2控制台?我有一个访问H2数据库的测试(成功),但如果我想自己检查数据库,我该怎么办?
我开始使用webEnvironment=DEFINED_PORT
运行测试,http://localhost:8080/响应HTTP,但没有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无法启动控制台吗?有没有办法说服它这样做?
答案 0 :(得分:2)
好的,我能够让它出现以下注释(在Kotlin中):
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT, properties = arrayOf("spring.h2.console.enabled=true"))
即使这样,控制台仍处于/h2-console
,因此它也明显忽略了控制台路径。我可以通过添加另一个属性来控制它。