11

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

public class InitializeFramework implements InitializingBean {


    @Override
    public void afterPropertiesSet() throws Exception {

        try {

        } catch (Exception e) {

        }
    }
}

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

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

4

1 回答 1

12

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

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

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

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

说你有

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

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

AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(MyConfiguration.class);

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

于 2013-09-12T18:14:48.387 回答