Spring Boot 测试:无法实例化内部配置类

Posted

技术标签:

【中文标题】Spring Boot 测试:无法实例化内部配置类【英文标题】:Spring boot test: Unable to instantiate inner configuration class 【发布时间】:2019-08-04 04:38:34 【问题描述】:

我想在不涉及我的主要 Spring 配置的情况下为我的 DAO 层运行 JUnit 测试。因此,我声明了一个带有 @Configuration 注释的内部类,以便它覆盖带有 @SpringBootApplication 注释的主应用程序类的配置。

这是代码:

@RunWith(SpringRunner.class)
@JdbcTest
public class InterviewInformationControllerTest 

    @Configuration
    class TestConfiguration

        @Bean
        public InterviewInformationDao getInterviewInformationDao()
            return new InterviewInformationDaoImpl();
        
    

    @Autowired
    private InterviewInformationDao dao;

    @Test
    public void testCustomer() 
        List<Customer> customers = dao.getCustomers();
        assertNotNull(customers);
        assertTrue(customers.size() == 4);

    


但我得到了错误:

Parameter 0 of constructor in com.test.home.controller.InterviewInformationControllerTest$TestConfiguration required a bean of type 'com.test.home.controller.InterviewInformationControllerTest' that could not be found.

【问题讨论】:

【参考方案1】:

任何嵌套的配置类都必须声明为静态。所以你的代码应该是:

@Configuration
static class TestConfiguration

    @Bean
    public InterviewInformationDao getInterviewInformationDao()
        return new InterviewInformationDaoImpl();
    

【讨论】:

以上是关于Spring Boot 测试:无法实例化内部配置类的主要内容,如果未能解决你的问题,请参考以下文章

当我尝试使用 Hibernate ogm 和 spring boot 时,控制台给出“无法实例化命名策略类”错误

如何构建Spring Boot Atomikos测试配置?

Spring boot-创建Tomcat

基于spring-boot-data-jdbc的RowMapper实例的初始化配置,配置内容和实体类的代码由测试类生成

Spring boot @SpyBean 尝试实例化一个新的 bean,而不是在上下文中监视它

在测试中实例化多个 Spring Boot 应用程序