【问题标题】:FEST Test hangs on creating new RobotFEST 测试挂起创建新机器人
【发布时间】:2013-05-08 12:41:42
【问题描述】:

我正在尝试在多个帧上运行测试。 执行时,它会挂在新机器人的创建上。

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

Robot robot2 = BasicRobot.robotWithCurrentAwtHierarchy();

window2 = new FrameFixture(robot2, frame2); 

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

【问题讨论】:

    标签: java fest


    【解决方案1】:

    尝试仅使用一个机器人,或确保在启动新机器人之前,旧机器人已完成 robot.cleanUp() 要么 robot.cleanUpWithoutDisposingWindows() 否则 您的新机器人将等待锁定屏幕, 第一个机器人拥有,所以你的测试程序会挂起。

    【讨论】:

      【解决方案2】:

      在创建 Fest 的机器人或在机器人上调用方法时,请确保您 在 UI 线程上。 Alex Ruiz explains this caution of Swing-Fest threading in his blog.

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

      也许可以使用这样的实用方法添加Precondition 调用:

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

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

      确保您安全地调用 Robot 方法。

      (如果 Fest 库可以添加一些状态或错误条件检查以强制执行 Alex 博客中详述的线程要求,那会不会很有帮助。)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-10-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多