spring-data-jpa - 如何在使用 DataJpaTest 的 Spring Boot 2.0 测试中访问 H2 控制台

标签 spring-data-jpa h2 spring-boot-test

使用@DataJpaTest 时,如何配置测试类以使用处理 H2 控制台的 http 请求所需的位运行?

我正在运行使用 H2 的 Spring Boot 2.0 测试。我想在测试中设置断点并查看 H2 中表的内容。但是,当测试在断点处停止并且我将浏览器指向 http://localhost:8080/h2-console 时,结果是一个空白页面,文本为“本地主机没有发送任何数据”。因此,看起来要么测试运行时没有处理 H2 控制台的 http 请求所需的位,要么我使用的 URL 是错误的。

注意:当我运行测试时,控制台显示嵌入式 H2 数据库已成功启动,因此我确信 H2 确实在运行。

这是我的测试类注释:
@ExtendWith(SpringExtension.class)@DataJpaTest@TestInstance(TestInstance.Lifecycle.PER_CLASS)
我读了一篇文章,建议在我的 pom 中包含 devtools,但这并没有解决我的问题。

编辑:我的问题的症结似乎是我无法弄清楚如何配置测试以包含嵌入式测试数据库和正在运行的 servlet。如果我用 @DataJpaTest 注释测试类和 @SpringBootTest(webEnvironment = ...) ,由于缺少 ServletWebServerFactory bean,测试崩溃。删除 @DataJpaTest修复了缺少 bean 的问题,但我不再有嵌入式测试数据库。仅使用 @DataJpaTest无法启动 servlet

最佳答案

H2 控制台是一个仅在某些条件下启动的 Web 应用程序:

  • You are developing a servlet-based web application.
  • com.h2database:h2 is on the classpath.
  • You are using Spring Boot’s developer tools.


https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-sql.html#boot-features-sql-h2-console

如果您正在运行测试而不启动 ServletContext,则 h2 控制台也不会启动。

关于spring-data-jpa - 如何在使用 DataJpaTest 的 Spring Boot 2.0 测试中访问 H2 控制台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50378365/

相关文章:

java - spring jpa 可分页排序 PropertyReferenceException

hibernate - 如何在 Tomcat 下使用 hibernate 为 H2 数据库文件提供相对路径?

java - @SpringBootTest 与@Sql : order of script execution and context initialization

java - SpringBoot不同连接池到同一个数据库

java - Spring 启动: Consider defining a bean named 'entityManagerFactory' in your configuration

java - 如何根据实体接口(interface)声明存储库?

java - H2 Java Insert ignore - 允许异常

database - 跨多个模式的 h2 数据库单元测试

gradle - 如何对导致 "No tests found for given includes"的@SpringBootTest 进行故障排除?

java - @DataJpaTest 不识别嵌入式 id 中的非空限制