如何将Spring bean添加到Spring Boot测试类中?

问题描述

我有一个集成测试,该测试使用了测试帮助程序类。当前,我使用junit BeforeEach方法创建此测试帮助程序类:

@AutoConfiguremockmvc
@SpringBoottest
public class EmployeeControllerIT {

    @Autowired
    private mockmvc mockmvc;
    
    private TestHelper testHelper;

    @BeforeEach
    public void setup() {
        this.testHelper = new TestHelper();
    }

    ...
}

但是,考虑到我正在使用Spring,我想使用依赖注入。如何将TestHelper添加到应用程序上下文中,以便可以如下自动进行接线:

@AutoConfiguremockmvc
@SpringBoottest
public class EmployeeControllerIT {

    @Autowired
    private mockmvc mockmvc;
    
    @Autowired
    private TestHelper testHelper;

    ....
}

解决方法

不是在TestHelper方法中初始化@BeforeEach,而是添加一个用@TestConfiguration注释的静态内部类,并将TestHelper声明为bean:

@AutoConfigureMockMvc
@SpringBootTest
public class EmployeeControllerIT {

    @Autowired
    private MockMvc mockMvc;
    
    @Autowired
    private TestHelper testHelper;

    @TestConfiguration
    public static class TestConfig {
        @Bean
        public TestHelper testHelper(SomeClass someClass) {
            return new TestHelper(someClass);
        }
    }

    ...
}
,

您是否尝试过使用@Component注释TestHelper?