FEST测试依赖于创建新的机器人



我正在尝试在多个帧上运行测试。当执行时,它挂起创建一个新的Robot。

第一帧使用默认的Robot,第二个Robot的代码如下:

Robot robot2 = BasicRobot.robotWithCurrentAwtHierarchy();
window2 = new FrameFixture(robot2, frame2); 

我不明白为什么它不会执行过这一行,没有抛出错误,只是暂停。

尽量只使用一个机器人,或者确保在启动一个新机器人之前,旧机器人执行arobot.cleanUp()robot.cleanUpWithoutDisposingWindows()否则你的新机器人就等着被锁在屏幕上,这第一个机器人拥有,所以你的测试程序将只是挂起。

当创建Fest's Robot或调用Robot上的方法时,请确保不在UI线程上。Alex Ruiz在他的博客中解释了Swing-Fest线程的谨慎之处。

我发现,如果我在JavaFX线程上调用Robot的方法,它始终只在OS X 10.8.5 Java 7(60)上挂起。在Windows 8、Java 7(60)中,这个微妙的、隐藏的问题没有显示出来。

也许可以像这样添加前置条件调用:

public static boolean isUIThread()
{
    return SwingUtilities.isEventDispatchThread() || Platform.isFxApplicationThread();
}

Preconditions.checkState(!Utilities.get().isUIThread());
Robot robot = new FrameFixture(frame).robot;

确保安全地调用Robot方法。

(如果Fest库可以添加一些状态或错误条件检查来强制执行Alex博客中详细介绍的线程要求,这不是很有帮助吗?)

相关内容

  • 没有找到相关文章

最新更新