Spring Boot集成测试中无法访问H2控制台的问题求助
Spring Boot集成测试中H2控制台无法访问的解决办法
问题根源
@SpringBootTest默认采用WebEnvironment.MOCK模式,该模式仅创建模拟Web环境,不会启动真实的嵌入式Web服务器。所以即便H2控制台已启用,也无法通过HTTP请求访问。
解决步骤
在@SpringBootTest注解中指定Web环境类型,启动真实服务器:
修改测试类代码
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) @SpringBatchTest class BankBatchApplicationTests { @Autowired private JobLauncherTestUtils jobLauncherTestUtils; @Test void contextLoads() throws Exception { JobExecution jobExecution = jobLauncherTestUtils.launchJob(); assertEquals("COMPLETED", jobExecution.getExitStatus().getExitCode()); } }
可选配置说明
- WebEnvironment.RANDOM_PORT:自动分配可用随机端口,避免端口冲突,适合自动化测试场景。
- 若需要固定端口,可改用WebEnvironment.DEFINED_PORT,此时将使用配置文件中
server.port指定的端口(默认8080)。
验证方法
重新运行测试,查看日志获取服务器启动端口,即可通过http://localhost:[端口号]/h2-console/访问控制台,注意确保控制台填写的JDBC URL与日志中显示的数据库地址一致。
内容的提问来源于stack exchange,提问作者AntonBoarf
相关产品推荐
相关产品推荐

