JDialogオブジェクトのいくつかのメソッドを単体テストしようとすると、NullPointerExceptionが発生します。ダイアログの親のモックバージョンと、使用される別のクラスを初期化する必要があります(静的メソッドの呼び出しに加えて。コードは次のとおりです。
@RunWith( PowerMockRunner.class )
@PrepareForTest( ControlFileUtilities.class )
public class StructCompDlgTest
{
@Before
public void setUp() throws Exception
{
controlFrame = org.mockito.Mockito.mock( ControlFrame.class );
structCmpDlg = new StructureCompareDialog( controlFrame );
serverPipeline = org.mockito.Mockito.mock( ServerPipeline.class );
}
...
}
ダイアログを構築するために呼び出されるコードは次のとおりです。
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を混同していることは知っていますが、選択の余地はありません。いくつかのユニットテストを既存のコードと一緒にスローするように指示されました。何が悪いのかわかりません。
ありがとう