对于Sikulix,Mac上的App.close()关闭应用程序,但返回false。它是否正确?

时间:2019-01-15 14:44:01

标签: java testing sikuli sikuli-x

我正在用Java构建SikuliX自动化脚本,并对.close()方法的行为感到困惑。 在Sikuli的App类中,close方法如下:

  /**
   * tries to close the app defined by this App instance, waits max given seconds for the app to no longer be running
   *
   * @return this or null on failure
   */
  public boolean close(int waitTime) {
    if (!isRunning()) {
      log("App.close: not running: %s", this);
      return false;
    }
    if (_osUtil.close(this)) {
      int timeTowait = maxWait;
      if (waitTime > 0) {
        timeTowait = waitTime;
      }
      while (isRunning(0) && timeTowait > 0) {
        timeTowait--;
      }
    }
    if (!isValid()) {
      log("App.close: %s", this);
    } else {
      log("App.close: did not work: %s", this);
      return true;
    }
    return false;
  }

对我来说有问题的是回报。我的理解是,由于它返回布尔值,因此如果成功关闭则为true,如果失败则为false。但是,此代码却相反。 基于对逻辑的有缺陷的理解,我最初像这样编写代码,

if (myApp.close()) {
    System.out.println("closed.");
    isAppClosed = true;
} else {
    System.out.println("NOT closed!");
    isAppClosed = false;
}

这与我想要的结果相反,因为应用程序成功关闭,但由于正在打印“未关闭”而导致测试失败。

我是否发现了错误,或者我缺少什么?

谢谢。

1 个答案:

答案 0 :(得分:1)

原来这是一个错误。该项目的维护者已在最新版本1.1.4中修复了该问题。 https://bugs.launchpad.net/sikuli/+bug/1811938