Java 如何在我的spring应用程序中测试afterPropertiesSet方法?
我正在为我的spring应用程序编写一些junit测试。下面是我实现InitializingBean接口的应用程序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) {
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);