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

时间:2013-09-12 18:05:00

标签: java spring junit

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

public class InitializeFramework implements InitializingBean {


    @Override
    public void afterPropertiesSet() throws Exception {

        try {

        } catch (Exception e) {

        }
    }
}

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

有人可以为我提供一个简单的示例,说明如何编写一个简单的junit测试来测试afterPropertiesSet类中的InitializeFramework方法吗?

1 个答案:

答案 0 :(得分:10)

没有任何ApplicationContext

InitializingBean#afterProperties()只是另一种手动实施和调用的方法。

@Test
public void afterPropertiesSet() {
    InitializeFramework framework = new InitializeFramework();
    framework.afterPropertiesSet();
    // the internals depend on the implementation
}

Spring的BeanFactory实现将检测上下文中类型为InitializingBean的实例,并且在设置了对象的所有属性之后,调用afterPropertiesSet()方法。

您也可以通过InitializeFramework实现构建ApplicationContext bean来测试它。

说你有

@Configuration
public class MyConfiguration {
    @Bean
    public InitializeFramework initializeFramework() {
        return new InitializeFramework();
    }
}

在测试的某个地方(虽然不是真正的junit,更多的是集成测试)

AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(MyConfiguration.class);

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