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

多模块Spring Boot项目中如何测试带嵌入式H2数据库的Repository

解决多模块Spring Boot项目Core模块Repository测试找不到配置的问题

问题原因

@DataJpaTest属于Spring Boot测试切片注解,默认会在当前模块的包路径下寻找带@SpringBootConfiguration(通常就是标注@SpringBootApplication的主类)的配置类,但你的core模块没有这类配置(配置集中在api模块),因此触发找不到配置的报错。

解决方案一:指定API模块的主配置类

直接在测试类的@DataJpaTest注解中指定api模块的主类,让测试上下文加载正确的配置:

@ExtendWith(SpringExtension.class)
@DataJpaTest(classes = ApiApplication.class) // 替换为你api模块中实际的主类名
public class NaceRepositoryTest {

    @Autowired
    private NaceRepository repository;

    // 原有测试方法不变
}

也可以通过@ContextConfiguration注解单独指定配置类:

@ExtendWith(SpringExtension.class)
@DataJpaTest
@ContextConfiguration(classes = ApiApplication.class)
public class NaceRepositoryTest {
    // 原有测试代码不变
}

解决方案二:创建Core模块专属的测试配置类

如果希望core模块的测试不依赖api模块的配置,可以在core模块的测试目录下创建一个独立的配置类:

在src/test/java下新增配置类:

@SpringBootConfiguration
@EnableJpaRepositories(basePackages = "com.yourcompany.core.repository") // 替换为你的Repository所在包路径
@EntityScan(basePackages = "com.yourcompany.core.entity") // 替换为你的实体类所在包路径
@EnableAutoConfiguration
public class CoreTestConfig {
}

然后修改测试类,使用这个专属配置:

@ExtendWith(SpringExtension.class)
@DataJpaTest(classes = CoreTestConfig.class)
public class NaceRepositoryTest {
    // 原有测试代码不变
}

额外说明

你在core模块测试资源目录下创建的data.sql和application.properties会被测试上下文自动识别并加载,无需额外配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 23:55:03