當我試圖單元測試JDialog對象中的某些方法時,出現NullPointerException。我必須初始化對話框的父的模擬版本,以及將用於(除了調用靜態方法的另一個類的代碼如下:Powermock,Mockito nullpointerexception當調用超級()時JDialog
所要求的代碼構建對話是在這裏:
StructureCompareDialog(IControlFrame controlFrame)
{
super((Frame) controlFrame, "title", true);
...
}
時超構造函數被調用,我將最終得到在java.awt.Window.addOwnerWindow(Window.java:2525)的NullPointerError」
void addOwnedWindow(WeakReference weakWindow) {
if (weakWindow != null) {
synchronized(ownedWindowList) { ***<<------ offending line***
// this if statement should really be an assert, but we don't
// have asserts...
if (!ownedWindowList.contains(weakWindow)) {
ownedWindowList.addElement(weakWindow);
}
}
}
}
我知道我正在混合靜態和擺動有毒漩渦gui,但我別無選擇。我被賦予了將現有代碼一起進行單元測試的指令。我不知道發生了什麼問題。
謝謝
你有沒有得到這個工作:
在您的設置()呢?如果是這樣,你介意發佈解決方案嗎? – glenneroo
Starnge你正在'synchronized(ownedWindowList)'獲得空指針。如果您檢查Window.java中的'ownedWindowList'數據成員,它已被實例化並且從未再次分配給null。 想知道什麼可能使這個數據成員爲空。 你能檢查你的代碼是否訪問了這個數據成員(使用反射)並且已經改爲null。儘可能少的情況下,這個數據成員需要手動更改,但更好確保。 –
@glenneroo,我認爲把賞金放在這裏而不是用自己的代碼創建新問題是一個錯誤。你能否提供一些細節,比如你做了什麼以及堆棧追蹤異常。 – SergGr