首页 > 解决方案 > 使用@ContextConfiguration(loader=MyLoader.class) 时如何只使用一个spring测试上下文

问题描述

我需要控制测试上下文的创建。因此,对于我的测试课程,我设置@ContextConfiguration(loader=MyLoader.class)了 where MyLoader extends AnnotationConfigContextLoader。问题是,对于 MyLoader 的每个测试类实例都会创建,并且加载器实例会创建新的上下文。所以,我为每个测试类都有了一个新的上下文。然而,这不是我需要的。是否可以让 spring-test 在控制加载过程的同时为所有测试类只创建一个上下文?

为了清楚起见,我使用 loader 因为我需要动态设置上下文配置类。我没有找到办法:

@ContextConfiguration(classProvider=ContextConfigClassProvider.class)//this is what I need
public class FooServiceIT {

    @Test
    public void t() {
        System.out.println("TEST");
    }
}

所以,我使用装载机。

标签: javaspringspring-test

解决方案


Spring Test 框架已经缓存了加载上下文的结果。重要的是缓存键由几个部分构成(请参阅参考指南)。只要这些部分相同,它就会使用已经加载的缓存并且不会再次重新加载。


推荐阅读