在JUnit中使用多个上下文加载器时自动装配异常

时间:2012-12-26 17:25:53

标签: spring maven junit4 maven-surefire-plugin

我为JUnit创建了两个类A,B,每个类都有自己的ContextLoaders来加载应用程序上下文。现在,当我独立运行这些类时,JUnit测试运行正常。

但是,当我在这两个类上进行maven构建或运行JUnit时,首先运行的那个说A,运行完全没问题,但第二个抛出异常(无法自动装入字段....预期一个没有找到...)。这是我正在尝试做的事情: -

带有上下文加载程序 A_ContextLoader

//类 A

@runwith(springjunit4classrunner.class)
@ContextConfiguration(loader = A_ContextLoader.class)
public class A {
     @Test
     public void testMethod1() {
       ...
     }
}
带有上下文加载程序 B_ContextLoader

//类 B

@runwith(springjunit4classrunner.class)
@ContextConfiguration(loader = B_ContextLoader.class)
public class B {
     @Test
     public void testMethod2() {
        ...
     }
}

根据我的理解,当第二个类的执行开始时,它使用现有的上下文而不是初始化一个新的上下文。在我的情况下,我不可能将上下文加载器组合成一个单独的类。

那么有什么方法可以在A类执行结束时“卸载”应用程序上下文。或者有些方法要求JUnit在B的执行开始时重新初始化上下文?或者我错过了什么?

1 个答案:

答案 0 :(得分:2)

在第一个解决方法中,尝试将@DirtiesContext添加到睾丸中。然后,这个带注释的睾丸的上下文在之后的其他测试中没有被使用。