我的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」的哪個實例都是相同的。 –