Я получаю исключение NullPointerException, когда пытаюсь выполнить тестирование некоторых методов в объекте JDialog. Я должен инициализировать макет версию родительского диалога, а также другой класс, который будет использоваться (в дополнении к вызову статического метода Код выглядит следующим образом:.Powermock, Mockito nullpointerexception при вызове super() 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);
}
}
}
}
Я знаю, что смешиваю статику и свинг-ги в ядовитом вихре, но у меня нет выбора. Мне была дана инструкция, чтобы собрать некоторые модульные тесты с существующим кодом. Я понятия не имею, что происходит не так.
Thanks
ли вы когда-нибудь получить эту работу? Если да, не возражаете ли вы опубликовать решение? – glenneroo
Starnge, вы получаете нулевой указатель на 'synchronized (ownedWindowList)'. Если вы проверили член данных 'ownedWindowList' в Window.java, он был создан и никогда не был назначен null. Подумайте, что может сделать этот элемент данных пустым. Можете ли вы проверить свой код, если этот элемент данных доступен (с использованием Reflection) и был изменен на null.Его наименее возможным случаем является то, что этот элемент данных необходимо изменить вручную, но лучше убедиться. –
@glenneroo, я думаю, что создание баунти здесь вместо того, чтобы создавать новый вопрос с вашим собственным кодом, было ошибкой. Не могли бы вы предоставить некоторые детали, такие как то, что вы делаете, и трассировать трассировку исключений (ов), которые вы получаете. – SergGr