我在寫一個類似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的
我寫了這篇文章,並且我想測試它在應該使用正確的參數時觸發事件。我猜,我在這裏做錯了什麼,是確保模型中的GUI線程。模型不是Swing組件,它不必在GUI線程內觸發事件。我在這裏想的是對的嗎? – 2009-09-26 10:34:24