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

AKI*_*WEB 10 java junit spring

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

public class InitializeFramework implements InitializingBean {


    @Override
    public void afterPropertiesSet() throws Exception {

        try {

        } catch (Exception e) {

        }
    }
}
Run Code Online (Sandbox Code Playgroud)

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

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

Sot*_*lis 11

InitializingBean#afterProperties()没有任何ApplicationContext只是另一种方法来实现和手动调用.

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

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

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

说你有

@Configuration
public class MyConfiguration {
    @Bean
    public InitializeFramework initializeFramework() {
        return new InitializeFramework();
    }
}
Run Code Online (Sandbox Code Playgroud)

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

AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(MyConfiguration.class);
Run Code Online (Sandbox Code Playgroud)

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