我有两个测试类
public class Test_1 {
@Autowired
private Gson gson;
@Test
public void test_1_1 () {
assertNotNull(gson);
}
}
public class Test_2 {
@Autowired
private Gson gson;
@Test
public void test_2_1 () {
assertNotNull(gson);
}
}
两者都需要spring应用程序Context。但不是给@RnWith(SpringRunner.class)& @ContextConfiguration(classes = {Config.class)})在我想要初始化Application Context一次的类上。同时我应该能够运行单一(通过eclipse进行任何测试)测试。 这可能吗。
通过这个:test suite inside spring context。但它加载应用程序上下文但在Test_1或Test_2中不可用(gson为null)。
答案 0 :(得分:0)
是的,这是完全可能的。你所要做的就是使用相同的东西 测试类中的locations属性:
@ContextConfiguration(locations =" classpath:test-context.xml")Spring 按位置属性缓存应用程序上下文,如果相同 位置第二次出现,Spring使用相同的上下文 而不是创建一个新的。
我写了一篇关于此功能的文章:加速Spring集成 试验。另外,它在Spring文档中有详细描述: 9.3.2.1上下文管理和缓存。
这有一个有趣的含义。因为春天不知道什么时候 JUnit完成后,它会永远缓存所有上下文并使用JVM关闭它们 关机钩。这种行为(特别是当你有很多测试时) 具有不同位置的类可能会导致过多的记忆 用法,内存泄漏等。缓存上下文的另一个好处。
来源answer