Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在swing单元测试中避免沉睡的蜗牛_Java_Swing_Unit Testing - Fatal编程技术网

Java 在swing单元测试中避免沉睡的蜗牛

Java 在swing单元测试中避免沉睡的蜗牛,java,swing,unit-testing,Java,Swing,Unit Testing,我想避免在swing单元测试中使用,但我看不到一种处理事件的方法。现在我有一些想法 WindowWithKeyListener window = new WindowWithKeyListener(); Robot robot = new Robot(); robot.keyPress(KeyEvent.VK_1); robot.keyRelease(KeyEvent.VK_1); assertTrue(window.key1pressed()); robot.keyPress(KeyEven

我想避免在swing单元测试中使用,但我看不到一种处理事件的方法。现在我有一些想法

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,这将无法工作,因为事件会变慢。但是我怎么能避免在这里睡觉呢


摆动计时器不能按特定顺序执行。这里最好的测试方法是什么?

Jemmy似乎已经解决了这个问题

org.netbeans.jemmy.operators.ComponentOperator.typeKey(int)

似乎需要等待。

我们已经在使用Jemmy了,如果有一个好的解决方案,那将是一个加号。为什么不注册一个进行资产评估的侦听器,或者可能使用未来并等待侦听器完成?我不知道我是否只是误解了,但当然我不想简单地验证事件触发,key1pressed表示由于触发事件而执行的更复杂逻辑。。。一个单一的执行人和期货应该是有效的,对吧。对我来说似乎太过分了,有更简单的解决办法吗?但是你怎么知道断言的未来可以开始呢?好吧,因为你总是需要等待事件完成,所以你必须等待这种情况,或者以某种方式同步调用;您可能会从所示的示例和