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

标签 java testing sikuli sikuli-x

我正在构建一个 SikuliX Java 中的自动化脚本并对 .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;
  }

对我来说问题的部分是返回。我的理解是,由于它返回一个 boolean 值,如果关闭成功则为真,如果关闭失败则为假。但是,此代码的作用恰恰相反。 基于我对这个逻辑的错误(?)理解,我最初是这样写我的代码的,

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

这与我想要的结果相反,因为应用程序已成功关闭,但测试失败,因为正在打印“NOT closed”。

我是不是发现了错误,还是遗漏了什么?

谢谢。

最佳答案

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

关于java - 对于 Sikulix,Mac 上的 App.close() 关闭应用程序,但返回 false。它是否正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54201161/

相关文章:

java - 如何防止文件覆盖自身?

java - 如何向 rmiregistry 传递多个参数

java - 使用 Mockito 调用回调

java - 在java中执行一些 'lambda calculus'的库

java - 根据输入的枚举值返回一个转换对象

python - 使用 Pytest 测试 Python 程序

java - JUnit 测试不是 Spring Controller 中的触发方法

c# - 屏幕区域识别以在屏幕上查找字段位置

java - 我收到异常 jniopencv_core.dll : Can't find dependent libraries error while trying Sikuli Java API test example

unit-testing - 帮助! Sikuli单元测试无法运行