java - 如何使用现有应用程序的 spring 配置类只测试一个 bean?

标签 java spring spring-4

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

XXApplicationConfig 是一个带有@Configuration 注释的文件,其中定义了一堆 spring bean。

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

这是我测试 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 上下文只是一种创建和连接对象的便捷方式。没有什么能阻止您自己创建和连接它们。

关于java - 如何使用现有应用程序的 spring 配置类只测试一个 bean?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25632395/

相关文章:

没有STOMP,sockjs的Spring 4 websocket

java - 如何找到两个任意多边形之间的重叠区域

java - 将 Java Web 应用程序迁移到 AWS - log4j 日志记录影响

java - 压缩多个 jasper 报告并通过电子邮件发送此 zip

java - Gson 在尝试字符串化对象时抛出 UnsupportedOperationException,该对象包含 java.lang.Class 作为字段

java - Spring security - 从自定义登录页面调用自定义身份验证提供程序

java - 如何将 Spring 4 与 Apache Tiles 3 集成?

java - 如何使用 Spring MVC 和 Java 获取基本的 HTTP 身份验证数据

java - 使用 RestTemplate 的 Spring Boot 多部分内容类型 HTTP 请求

java - Spring 4 AOP方面从未被调用?