【发布时间】:2014-03-06 09:39:06
【问题描述】:
我想在我的 Swing 单元测试中避免使用 sleeping snail,但我看不到用事件来做到这一点的方法。目前我有一些想法
WindowWithKeyListener window = new WindowWithKeyListener();
Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_1);
robot.keyRelease(KeyEvent.VK_1);
assertTrue(window.key1pressed());
robot.keyPress(KeyEvent.VK_2);
robot.keyRelease(KeyEvent.VK_2);
assertTrue(window.key2pressed());
如果在断言之前没有Thread.sleep(),这将不起作用,因为事件会变慢。但是我怎么能在这里避免Thread.sleep()?
摆动计时器不能按特定顺序执行。在这里进行测试的最佳方法是什么?
【问题讨论】:
-
我们已经在使用 Jemmy,如果有好的解决方案,那将是一个加分项。
-
为什么不注册一个执行断言的侦听器,或者使用未来并等待侦听器完成?
-
不知道是不是我的理解有误,不过我当然不想简单的验证事件触发,
key1pressed代表因为事件触发而执行的更复杂的逻辑。 .. 一个 executor 和 Futures 应该可以工作,对吧。对我来说看起来有点矫枉过正,有没有更简单的解决方案?但是你怎么知道断言 Future 可以启动呢? -
好吧,既然您总是需要等到事件完成,您就必须等待这种情况或以某种方式同步调用。
标签: java swing unit-testing