Spring 启动集成测试中的 H2 控制台

H2 Console in Spring Boot Integration Test

我正在使用 Spring Boot 1.3.1.RELEASE。我通过在 application.properties 文件中设置 spring.h2.console.enabled=true 来启用 H2 Web 控制台。如果我启动 Spring 引导应用程序,我可以通过 http://localhost:8080/h2-console/.

访问 H2 Web 控制台

但是,当我在设置了断点的调试模式下执行集成测试时,无法访问控制台。不幸的是,这不起作用(网站不可用)。集成测试配置如下:

@ActiveProfiles("local,unittest")
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = MyApplication.class)
@WebAppConfiguration
@IntegrationTest
public class MyResourceTest {

我没有考虑到什么?

要启用 H2 Web 控制台,您应该将与此项相关的属性文件的值聚合为注释的可选元素 @IntegrationTest

字符串[]值 key=value 形式的属性,应在测试运行前添加到 Spring 环境。

示例:

@IntegrationTest({"spring.h2.console.enabled=true"})

并牢记这条建议:

If your test also uses @WebAppConfiguration consider using the @WebIntegrationTest instead of @IntegrationTest

所以,尝试使用 @WebIntegrationTest 而不是 @IntegrationTest 并添加密钥 spring.h2.console.enabled = true

http://docs.spring.io/spring-boot/docs/current/api/org/springframework/boot/test/IntegrationTest.html

http://docs.spring.io/spring-boot/docs/current/api/org/springframework/boot/test/WebIntegrationTest.html

也许您可能需要添加键 "server.port=8080" 作为注释 @WebIntegrationTest 的另一个值