我在写一个类似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