如何在使用DataJpaTest

时间:2018-05-16 19:11:04

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

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

我正在运行使用H2的Spring Boot 2.0测试。我想在测试中设置断点并在H2中查看表的内容。但是,当测试在断点处停止并且我将浏览器指向http://localhost:8080/h2-console时,结果是一个空白页面,其中包含文本" localhost没有发送任何数据"。因此,似乎测试运行时没有处理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

1 个答案:

答案 0 :(得分:0)

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

  
      
  • 您正在开发基于servlet的Web应用程序。
  •   
  • com.h2database:h2在类路径上。
  •   
  • 您正在使用Spring Boot的开发人员工具。
  •   

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

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