【发布时间】:2008-11-30 20:05:39
【问题描述】:
我有 Swing java 应用程序,它与多个“播放器”进行网络通信,这些“播放器”表示为播放器对象,每个播放器都有自己的通信线程。该应用程序有一个管理所有玩家对象的“团队”对象。几个 UI 组件通过 Team 对象监听玩家传递的事件。
在我的设计中,团队对象使用 invokeLater 触发 Swing 线程上的所有事件,这样我的应用程序的其余部分就不必为线程问题而烦恼。但是,我不知道如何在 JUnit 测试中测试 Team 类。
更多背景知识。起初,我让 Team 对象在玩家对象线程上触发其事件(根本没有线程切换)。 Team 单元测试成功了,但我在 UI 中使用 invokeLaters 遇到了许多线程问题,并且在所有地方都进行了同步。然后我决定通过让 Team 对象在 Swing 线程上触发事件来简化线程模型,但是现在 Team 单元测试失败了,因为它没有接收到事件。怎么办?
想到的一个解决方案是在 Team 之上引入一个额外的对象,该对象执行线程切换并保持原始单元测试的完整性,但我不喜欢在生产代码中引入复杂性只是为了制作一个单元的想法测试成功。
【问题讨论】:
标签: java unit-testing swing events junit