Я получаю исключение NullPointerException при попытке unit test некоторых методов в объекте JDialog. Я должен инициализировать макетную версию родителя диалога, а также другой класс, который будет использоваться (в дополнение к вызову статического метода. Код выглядит следующим образом:
@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 );
...
}
когда вызывается суперструктор, я в конечном итоге получаю NullPointerError в java.awt.Window.addOwnerWindow(Window.java:2525) "
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);
}
}
}
}
Я знаю, что смешиваю статику и свинг-ги в ядовитом вихре, но у меня нет выбора. Мне была дана инструкция, чтобы собрать некоторые модульные тесты с существующим кодом. Я понятия не имею, что происходит не так.
Спасибо