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

JHipster编写测试用例遇@SpringBootConfiguration找不到异常求助

解决JHipster项目中@DataJpaTest找不到@SpringBootConfiguration的问题

这个异常的核心原因是:JHipster项目的主Spring Boot配置类(带@SpringBootApplication注解的类)通常位于项目根包下,而@DataJpaTest默认会扫描当前测试类所在包及其子包寻找@SpringBootConfiguration,如果测试类包路径与主配置类不匹配,或未明确指定配置类,就会触发该报错。

以下是几种可行的解决办法:

1. 对齐测试类与主应用类的包路径

确保RoleRepositoryTest所在的包,和项目主应用类(比如YourApplication.java)的包完全一致或是其子包。比如主类在com.yourcompany.yourapp,测试类就要放在com.yourcompany.yourapp或com.yourcompany.yourapp.repository这类子包下。

2. 显式指定主配置类

如果不想调整包结构,直接在测试类上添加@ContextConfiguration注解,指定项目的主Spring Boot配置类:

@DataJpaTest
@AutoConfigureTestDatabase()
@TestPropertySource(locations = "classpath:config/application-testdev.yml")
@ContextConfiguration(classes = YourApplication.class) // 替换成你的主应用类名称
class RoleRepositoryTest {

    @Autowired
    private RoleRepository roleRepository;

    // ... 你的测试方法
}

3. 参考JHipster自动生成的测试类写法

JHipster自带的Repository测试类通常会包含额外配置,比如导入安全配置,你可以参考这种写法调整测试类:

@DataJpaTest
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
@TestPropertySource(locations = "classpath:config/application-testdev.yml")
@Import(SecurityAutoConfiguration.class)
class RoleRepositoryTest {

    @Autowired
    private RoleRepository roleRepository;

    @Test
    void shouldSaveAndRetrieveRole() {
        // given
        Role role = new Role("Parent","string",true,"1601", ACTIVE,"string",false);
        // when
        Role saved = roleRepository.save(role);
        // then
        assertThat(roleRepository.findById(saved.getId()).get()).isEqualTo(saved);
        assertThat(role).isNotNull();
        assertThat(roleRepository.findAll()).hasSize(1);
    }
}

额外注意事项

  • 确认application-testdev.yml文件确实存在于src/test/resources/config目录下(测试用配置建议放在test资源目录而非main)
  • 测试方法命名建议使用更具语义化的名称,比如shouldSaveAndRetrieveRole,便于理解测试意图

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 18:35:15