【问题标题】:Can a Spring Bean programmatically replaced in an loaded SpringContext可以在加载的 Spring 上下文中以编程方式替换 Spring Bean
【发布时间】:2011-10-28 09:24:00
【问题描述】:

我想编写一个集成测试,但有一个小限制。我有一个要模拟的 TimeSourceBean。这个 TimeSourceBean 在应用程序中被多次使用。 (没有办法通过反射来做到这一点)

一切都由自动接线完成。

我想我可以在我的测试中加载一个带有我喜欢的实现的附加 XML。 见:here

但如果我可以在测试本身中创建我的模拟 TimeSourceBean 并将其注册(替换原始 bean)到上下文中,那就太好了

=> 所以在开始测试之前,我创建了模拟并像这样注册我的 bean:

context.registerBean(timeSourceBeanMockVersion);

如果可能的话,有什么想法吗?

【问题讨论】:

    标签: spring integration-testing applicationcontext


    【解决方案1】:

    您可以添加一个实现相同接口的其他 bean/类(希望您使用它们),并将这个其他 bean 类标记为 @Primary。

    但是你需要确保这个主 bean 只在你需要的测试用例中加载。

    【讨论】:

      猜你喜欢
      • 2011-05-31
      • 2017-08-18
      • 2015-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-19
      相关资源
      最近更新 更多