我正在为我的spring应用程序编写一些junit测试。下面是我的应用程序,它实现了InitializingBean接口,
public class InitializeFramework implements InitializingBean {
@Override
public void afterPropertiesSet() throws Exception {
try {
} catch (Exception e) {
}
}
}
现在我想从我的junit测试中调用afterPropertiesSet
方法,但不知何故,我无法理解这样做的正确方法是什么?我想,我可以用反射来调用这种方法,但我不认为,这是一种正确的方法吗?
有人可以为我提供一个简单的示例,说明如何编写一个简单的junit测试来测试afterPropertiesSet
类中的InitializeFramework
方法吗?
答案 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
方法被调用。