Obtengo una NullPointerException cuando intento probar algunos métodos en un objeto JDialog. Tengo para inicializar una versión simulada del padre del diálogo, así como otra clase que se utilizará (además de llamar a un método estático El código es el siguiente:.Powermock, Mockito nullpointerexception al llamar a 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);
}
...
}
El código que se pidió la construcción del diálogo está aquí:
StructureCompareDialog(IControlFrame controlFrame)
{
super((Frame) controlFrame, "title", true);
...
}
cuando el super constructor se llama puede que lo consiga un NullPointerError en 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);
}
}
}
}
Sé que estoy mezclando statics y swing GUI en un remolino tóxico, pero no tengo otra opción. Me dieron la instrucción de juntar algunas pruebas unitarias con el código existente. No tengo idea de qué está pasando mal.
Gracias
¿Alguna vez este trabajo? Si es así, ¿te importaría publicar la solución? – glenneroo
Starnge está obteniendo un puntero nulo en 'synchronized (ownedWindowList)'. Si marca el miembro de datos 'ownedWindowList' en Window.java, se ha instanciado y nunca se ha asignado a null nuevamente. preguntándose qué podría hacer que este miembro de datos sea nulo. Puede verificar su código si se accede a este miembro de datos (utilizando Reflection) y se lo ha cambiado a nulo.En el mínimo caso posible, este miembro de datos debe cambiarse manualmente, pero es mejor asegurarse. –
@glenneroo, creo que poner recompensa aquí en lugar de crear una nueva pregunta con tu propio código fue un error. ¿Podría proporcionar algunos detalles, como lo que hace y acumular el rastro de excepción (s) que obtiene. – SergGr