Sto scrivendo un'applicazione simile a TotalCommander. Ho un componente separato per la lista dei file e un modello per questo. ascoltatori di supporto del modello e le questioni di una notifica per eventi come CurrentDirChanged
ecc in modo seguente:Unit test su un componente Swing
private void fireCurrentDirectoryChanged(final IFile dir) { if (SwingUtilities.isEventDispatchThread()) for (FileTableEventsListener listener : tableListeners) listener.currentDirectoryChanged(dir); else { SwingUtilities.invokeLater(new Runnable() { public void run() { for (FileTableEventsListener listener : tableListeners) listener.currentDirectoryChanged(dir); } }); } }
Ho scritto un semplice test per questo:
@Test public void testEvents() throws IOException { IFile testDir = mockDirectoryStructure(); final FileSystemEventsListener listener = context.mock(FileSystemEventsListener.class); context.checking(new Expectations() {{ oneOf(listener).currentDirectoryChanged(with(any(IFile.class))); }}); FileTableModel model = new FileTableModel(testDir); model.switchToInnerDirectory(1); }
Questo non funziona, perché non c'è EventDispatchThread
. C'è un modo per testare l'unità all'interno della configurazione senza testa?
unit test Java Swing jMock
Ho scritto questo co e voglio testare che spara gli eventi quando dovrebbe e con i parametri corretti.Immagino, quello che sto facendo male qui, è quello di garantire il thread GUI all'interno di un modello. Il modello non è un componente Swing, non deve generare eventi all'interno di un thread della GUI. Sto pensando correttamente qui? –