从春季应用程序上下文XML获取bean描述,而无需初始化bean



是否有一种体面的方法可以从XML读取弹簧应用程序上下文,而无需立即初始化bean,因此可以对它们进行嘲笑,然后才能真正创建它们?

是的,我知道懒惰,但是实际的applicationContext.xml对我来说是禁忌。

情况是,我必须在应用程序上创建一些JUNIT测试,该应用程序以某种方式创建了一些困难:

  1. 不得更改配置文件,也不能进行测试的代码

  2. 有很多豆子,其中一些相当复杂且难以模拟

  3. 测试的一部分是使用尽可能多的豆子

  4. 使用
  5. 某些bean实现了InitializingBean,在詹金斯(Jenkins)试图构建时验证了初始化的环境,并抛出错误。

new FileSystemXmlApplicationContext("config.xml")立即初始化豆子并在适当的环境中引发错误。

我尝试的是:

我曾尝试过powermock何时嘲笑有问题的豆子,但是要做到这一点,我必须知道实际上创建豆类的班级。由于此类属于春季框架,因此可能会随后版本而变化。使用@prepareeverythingfortest时,会导致堆栈流异常。该应用程序是现实生活,而不是一些教程中的一小部分代码。

我还搜索了 forcelazy filesystemxmlapplicationContext,但什么都没找到的东西。

请求不要开始对不良的设计na,我知道这一点。

您可以为您的测试目的编写自己的ApplicationContext。在那里,您需要写自己的beanfactory。在该工厂中,您可以用模拟替换一些豆子。

我只记得一个选项。评估您是否可以使用春季配置文件。它将允许根据配置文件选择其他实现。

示例:

<!-- This is the default myBean -->
<beans>
    <bean id="myBean" class="mypackage.MyBean" />
</beans>
<!-- This is the mocked myBean for testing purposes, it will take place when testingProfile is active -->
<beans profile="testingProfile">
    <bean id="myBean" class="mypackage.MyBeanMock" />
</beans>

您可以指示通过属性或环境变量使用的配置文件。例如,如果您在项目中使用Maven,则可以按照:

进行测试
mvn test -Dspring.profiles.active="testingProfile"

看一下:

http://www.baeldung.com/spring-profiles

https://spring.io/blog/2011/02/11/spring-framework-3-1-m1-relase/

相关内容

  • 没有找到相关文章

最新更新