在我的代码中,我不想加载XXApplicationConfig类中定义的所有bean。

XXApplicationConfig是一个@Configuration注释文件,其中定义了许多spring bean。

因此,我想在测试时仅从XXApplicationConfig类加载AppBean,以减少加载测试时间并区分我要测试的内容。我还想使用XXApplicationConfig类加载该类,以确保定义的bean配置也正确。

这是我的Test类(已修改),用于测试AppBean类。

您能否让我知道这是否是正确的方法,并提出如何改善它的建议?目前,这种方法似乎行之有效。但是,不确定这是否是正确的处理方法。

@ContextConfiguration(loader=AnnotationConfigContextLoader.class)
@RunWith(SpringJUnit4ClassRunner.class)
public class ApplicationTest {

    @Configuration
    @PropertySources(value = {@PropertySource("classpath:test.properties")})
    static class MyTestConfiguration {

        @Bean
        public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceHolderConfigurer()  {
            return new PropertySourcesPlaceholderConfigurer();
        }

        @Bean
        public XXApplicationConfig xxAppConfig() {
            return new XXApplicationConfig();
        }

        @Bean
        public CustomTestService customTestService() {
            return new CustomTestService();
        }

        @Bean
        public AppBean appBean() throws Exception {
            return XXApplicationConfig().appBean();
        }

    }

    @Autowired
    private AppBean appBean;


    @Test
    public void testAppBean() {
        test appBean.doSomething();
    }
}

最佳答案

如果只想测试一个对象,则使用该类的构造函数创建该类的一个对象。 Spring bean被设计为POJO。 Spring上下文只是创建和连接对象的便捷方式。没有什么可以阻止您自己创建和连接它们的。

10-06 05:46
查看更多