SpringRunner只初始化给定的bean

时间:2018-01-29 07:04:49

标签: spring spring-mvc spring-test

我正在尝试实现Spring集成测试,我正在考虑两种方法:

  1. 对于每个测试都有不同的配置,并且只为给定的测试初始化​​必要的bean。这应该意味着测试是隔离的,并且Spring上下文应该很快初始化,因为它不需要两个很多依赖项。我会用它来忽略unitialised bean:

    <bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor">
        <property name="requiredParameterValue" value="false" />
    </bean>
    

    缺点是每次测试都有单独的applicationContext.xml。双重性特别令人不愉快,因为每次测试的配置的80%都是相同的。有没有办法定义bean直接在测试中初始化而无需单独的xmls配置?

  2. 使用所有bean初始化完整的应用程序将简化测试过程,因为我们不必挑选bean并运行它。然而,这将需要更长的时间来启动并重新启动应用程序,因为每类测试都需要很长时间。解决方案是,如果应用程序可以在运行所有测试之前启动,那么它将不会为每个测试类重新启动。这可行吗?

  3. 您能否对这两种方法发表评论,这种方法更标准,更合适?

1 个答案:

答案 0 :(得分:1)

正如M. Deinem指出的那样......

是的, Spring TestContext Framework 非常聪明,自从我在2007年推出它以来就一直这样。; - )

上下文缓存实际上是 Spring TestContext Framework 的主要功能之一。

有关详细信息,请参阅Spring参考手册中 Testing 章节的Context Caching部分。