我正在尝试实现Spring集成测试,我正在考虑两种方法:
对于每个测试都有不同的配置,并且只为给定的测试初始化必要的bean。这应该意味着测试是隔离的,并且Spring上下文应该很快初始化,因为它不需要两个很多依赖项。我会用它来忽略unitialised bean:
<bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor">
<property name="requiredParameterValue" value="false" />
</bean>
缺点是每次测试都有单独的applicationContext.xml
。双重性特别令人不愉快,因为每次测试的配置的80%都是相同的。有没有办法定义bean直接在测试中初始化而无需单独的xmls配置?
使用所有bean初始化完整的应用程序将简化测试过程,因为我们不必挑选bean并运行它。然而,这将需要更长的时间来启动并重新启动应用程序,因为每类测试都需要很长时间。解决方案是,如果应用程序可以在运行所有测试之前启动,那么它将不会为每个测试类重新启动。这可行吗?
您能否对这两种方法发表评论,这种方法更标准,更合适?
答案 0 :(得分:1)
正如M. Deinem指出的那样......
是的, Spring TestContext Framework 非常聪明,自从我在2007年推出它以来就一直这样。; - )
上下文缓存实际上是 Spring TestContext Framework 的主要功能之一。
有关详细信息,请参阅Spring参考手册中 Testing 章节的Context Caching部分。