运行SpringBootTest时访问H2控制台

时间:2018-05-16 15:15:43

标签: spring-boot spring-boot-test

如果我使用@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无法启动控制台吗?有没有办法说服它这样做?

1 个答案:

答案 0 :(得分:2)

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

即使这样,控制台仍处于/h2-console,因此它也明显忽略了控制台路径。我可以通过添加另一个属性来控制它。