Я пишу приложение TotalCommander. У меня есть отдельный компонент для списка файлов и модель для него. слушателей поддержки модели и выдает уведомления для событий, как CurrentDirChanged
и т.п. в следующем порядке:Тестирование модуля компонента 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); } }); } }
Я написал простой тест для этого:
@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); }
Это не работает, потому что нет EventDispatchThread
. Есть ли способ, чтобы проверить это внутри сборки без головы?
модульного тестирования Java Swing JMock
Я написал этот co, и я хочу проверить, что он запускает события, когда это необходимо, и с правильными параметрами.Я думаю, что я делаю неправильно здесь, это обеспечить поток GUI внутри модели. Модель не является компонентом Swing, ей не нужно запускать события внутри потока графического интерфейса. Думаю ли я здесь правильно? –