小编典典

在junit测试类中重用spring应用程序上下文

spring

我有一堆JUnit测试用例(集成测试),它们在逻辑上分为不同的测试类。

我们能够为每个测试类加载一次Spring应用程序上下文,然后将其重新用于JUnit测试类中的所有测试用例

但是,我们只是想知道是否有一种方法可以对一堆JUnit测试类仅加载一次Spring应用程序上下文。

FWIW,我们使用Spring 3.0.5,JUnit 4.5并使用Maven构建项目。


阅读 842

收藏
2020-04-12

共1个答案

小编典典

是的,这完全有可能。你要做的就是locations在测试类中使用相同的属性:

@ContextConfiguration(locations = "classpath:test-context.xml")

Spring按locations属性缓存应用程序上下文,因此,如果locations第二次出现相同的上下文,Spring将使用相同的上下文,而不是创建一个新的上下文。

这具有有趣的含义。因为Spring不知道JUnit何时完成,所以它将永远缓存所有上下文,并使用JVM shutdown挂钩关闭它们。此行为(尤其是当你有许多不同的测试类时locations)可能导致过多的内存使用,内存泄漏等。缓存上下文的另一个优点。

2020-04-12