我的Junit测试代码如下所示。手动bean自动装配在JUnit测试中不起作用
private static boolean setupDone = false;
private Box box;
@Before
public void setup(){
if (setupDone){
return true;
}
box = new BoxCreator(this.applicationContext);
applicationContext.getAutowireCapableBeanFactory().autowireBean(box);
setupDone = true;
}
@Test
public void Test1(){
String response = box.getBoxResponse();
...asserts go here as usual....
}
@Test
public void Test2(){
String response = box.getBoxResponse();
...asserts go here as usual....
}
现在发生的情况是,Setup方法只会根据setupDone变量的需要运行一次。
创建Box对象的实例后自动调用它的设置方法如上面代码中所示。意图是拥有这个类的单例,并在每个测试中使用相同的实例。
现在问题是无论哪个测试方法首先运行获取box对象的值,第二个测试方法将box看作null。不确定为什么当第二个测试方法执行时它变为空。
那么你的意思是说在同一个测试类中的不同测试会有不同的应用上下文? – Hary
每个测试都有不同的“this”及其所有实例变量。静态变量保留在类中,并且无论“this”的哪个实例都是相同的。 –