Java 如何在我的spring应用程序中测试afterPropertiesSet方法?

Java 如何在我的spring应用程序中测试afterPropertiesSet方法?,java,spring,junit,Java,Spring,Junit,我正在为我的spring应用程序编写一些junit测试。下面是我实现InitializingBean接口的应用程序 public class InitializeFramework implements InitializingBean { @Override public void afterPropertiesSet() throws Exception { try { } catch (Exception e) {

我正在为我的spring应用程序编写一些junit测试。下面是我实现InitializingBean接口的应用程序

public class InitializeFramework implements InitializingBean {


    @Override
    public void afterPropertiesSet() throws Exception {

        try {

        } catch (Exception e) {

        }
    }
}

现在我想从junit测试中调用
afterPropertiesSet
方法,但不知何故,我无法理解这样做的正确方法是什么?我想,我可以用反射来调用这个方法,但我不认为,这是一个正确的方法吗


有谁能给我一个简单的例子来说明如何编写一个简单的junit测试,在
InitializeFramework
类中测试
afterPropertiesSet
方法吗?

没有任何
ApplicationContext
只是另一个手动实现和调用的方法

@Test
public void afterPropertiesSet() {
    InitializeFramework framework = new InitializeFramework();
    framework.afterPropertiesSet();
    // the internals depend on the implementation
}
Spring的实现将在上下文中检测类型为
InitializingBean
的实例,并且在设置了对象的所有属性之后,调用
AfterPropertieSet()
方法

您也可以通过让
ApplicationContext
实现构造
InitializeFramework
bean来测试这一点

说你有

@Configuration
public class MyConfiguration {
    @Bean
    public InitializeFramework initializeFramework() {
        return new InitializeFramework();
    }
}
在测试的某个地方(虽然不是真正的junit,更多的是集成测试)


加载上下文时,您会注意到调用了
InitializeFramework
bean的
AfterPropertieSet()
方法。

是否只调用该方法?还是你想让Spring来做?它们之间有什么区别?这就是它的工作原理-afterPropertiesSet方法将调用一个方法-a,然后方法-a将调用其他方法。。。所以我在考虑编写junit测试来测试实际的流…
AfterPropertieSet()
是一种正常的方法。如果您单独测试bean,只需从测试代码中调用它即可。如果您有
InitializeFramework
的实例,只需在其上调用
AfterPropertieSet
。Spring的上下文类被设置为在类型为
InitializingBean
的对象上调用
AfterPropertieSet
。感谢Sotirios的建议。这对我来说是有道理的。。有没有办法,你可以为这句话提供一个例子
你也可以通过让你的InitializeFramework bean由ApplicationContext实现构造来测试它。
我可能也想试试这种方法,我正在传递构建bean的xml文件中的某些属性。@TrekkieTechieT-T看不到我的编辑。此外,没有任何东西可以阻止您自己调用
AfterPropertieSet()
(并可能缓存结果)。@trekkietchiet-T它还可以帮助您理解什么是
FactoryBean
。读它。
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(MyConfiguration.class);