You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot Repository单元测试启动失败求助

问题排查与解决

核心原因

当前异常是因为@DataJpaTest注解默认会尝试用嵌入式数据库替换应用的数据源,但项目测试依赖中未引入支持的嵌入式数据库,或者你需要使用真实数据库进行测试。

解决方案

方案1:添加嵌入式数据库依赖(推荐单元测试场景)

在项目构建文件中加入嵌入式数据库(如H2)的测试依赖,Spring Boot会自动配置它作为测试数据源:

Maven(pom.xml)

<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <scope>test</scope>
</dependency>

Gradle(build.gradle)

testImplementation 'com.h2database:h2'

添加后,测试启动时Spring Boot会自动初始化H2数据库,无需额外配置。

方案2:使用应用配置的真实数据库测试

如果希望直接用项目中配置的数据源(如MySQL、PostgreSQL)做测试,修改测试类注解,关闭嵌入式数据库替换逻辑:

@DataJpaTest
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
class OptionRepositoryTest {

    @Autowired
    private OptionRepository underTest;

    // 测试方法...
}

注意:这种方式需要确保测试环境数据库可用,且测试数据不会污染生产数据。

额外检查点

  • 确认实体类构造函数与JPQL查询的字段顺序一致:你的findAllEn()查询使用的构造函数是Option(String name_en, Long id, String imgDesc_en, byte[] imgSrc),需保证参数顺序和JPQL中的c.name_en,c.id,c.imgDesc_en,c.imgSrc完全匹配,避免后续查询出现字段映射错误。

内容的提问来源于stack exchange,提问作者Pertsh Galstyan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 15:06:39