【问题标题】:XCTests Failing on Physical Device: "Canceling tests due to timeout ..."XCTests 在物理设备上失败:“由于超时而取消测试......”
【发布时间】:2016-10-21 16:29:12
【问题描述】:

XCTests 失败并显示以下消息:*** Canceling tests due to timeout in Waiting for test process to check in... 这是最近几天才开始出现的。我使用的是 Xcode 7.3.1,iOS 9.3.2 在 iPhone 6 上运行。我的应用程序主要是用 Swift 编写的。

我看过一些类似的帖子:

  1. Unable to run XCTests on iOS device
  2. iOS tests will not run on simulator when using Jenkins through JNLP

那些其他帖子谈到这个问题是由代码签名引起的。代码签名似乎不是我的问题——我查看了 KeyChain Access 实用程序,没有看到任何相关的过期证书。此外,到目前为止(非常暂时)解决我的问题是重新启动我的 iPhone。 (不幸的是,该修复并没有持续很长时间——也许运行了几次 XCtests,问题又出现了)。我没有运行 Jenkins,只是运行 XCTests。

我已尝试重新启动 Xcode 并从 DerivedData 文件夹中删除所有文件/文件夹,但这些都不能解决问题。

确实只是安装了 Xcode8(第一个 beta 版本)。但除了启动过一次或两次之外,我一般不使用它。这个问题是在刚刚安装之后出现的,这似乎很巧合。

2016 年 6 月 25 日更新

我已经稍微缩小了这个问题的范围。超时问题同时出现其他几种症状:

  1. 直接从 XCTest 文件中的 print 语句进行控制台日志记录将停止。
  2. 定时器失败——这实际上是问题的根源。我的测试涉及首先等待发生的一些服务器交互。但是等待使用一个从不执行其回调的 NSTimer。
  3. 断点停止工作。

值得注意的是,我正在手动运行这些 XCTest。也就是说,我分别运行每个测试,因此每个测试都涉及构建。

此外,到目前为止,我已经测试了以下内容:

  1. 重新启动 Xcode(没有帮助)
  2. 重新启动 Mac OS X(没有帮助)
  3. 删除派生数据内容(没有帮助)
  4. 重新启动 iPhone 会有所帮助,但只能再次允许一些 Xcode 测试运行。
  5. 尝试在 iPhone 上使用 wifi 与热点运行(没有问题)
  6. TODO:使用模拟器运行
  7. 这可能是电缆或 USB 端口问题吗?更换连接设备的电缆也无济于事。
  8. 删除应用并重新安装/重建没有帮助。
  9. 在不同的硬件上试过(iPad Air 运行 iOS 9.3.2)。同样的问题。

我的配置是:iOS 9.3.2、Xcode 7.3.1、Mac OS X 10.11.5 (15F34)。

【问题讨论】:

    标签: ios iphone xcode swift xctest


    【解决方案1】:

    我想在这里添加另一个解决方案供其他人检查。如果您的笔记本电脑受到严格的防病毒保护,请确保它们已豁免 ~/Library/Developer。我遇到了这个问题,因为我的防病毒软件正在隔离 ~/Library/Developer/CoreSimulator/Devices/.....

    如果测试过程被隔离,则很难运行测试。

    【讨论】:

      【解决方案2】:

      虽然我认为 Werner Altewischer 的回答是正确的,但始终重要的是要查看您看到的最早错误,而不是最新错误。

      就我而言,我看到了问题中发布的错误,但在此之前有许多编译错误。

      例如

      Testing failed:
          '...' is not a postfix unary operator
          'count' is unavailable: there is no universally good answer, see the documentation comment for discussion
          Cannot convert value of type 'Int' to expected argument type 'IntMax' (aka 'Int64')
          Cannot convert value of type 'Int8' to expected argument type 'IntMax' (aka 'Int64')
          Cannot convert value of type 'Int16' to expected argument type 'IntMax' (aka 'Int64')
          Cannot convert value of type 'Int32' to expected argument type 'IntMax' (aka 'Int64')
          Cannot convert value of type 'UInt' to expected argument type 'UIntMax' (aka 'UInt64')
          Cannot convert value of type 'UInt8' to expected argument type 'UIntMax' (aka 'UInt64')
          Cannot convert value of type 'UInt16' to expected argument type 'UIntMax' (aka 'UInt64')
          Cannot convert value of type 'UInt32' to expected argument type 'UIntMax' (aka 'UInt64')
      

      我最终意识到我在 TravisCI 中没有更新目标 Xcode 版本就升级了我的环境。

      正在改变...

      osx_image: xcode8.3
      

      到...

      osx_image: xcode9.3
      

      在我的.travis.yml 中为我解决了这个问题。

      【讨论】:

        【解决方案3】:

        这是由代码中的无限循环引起的问题。我有同样的错误,但我删除了导致问题的一段代码,它工作正常。 xcode 不会为您提供太多工作信息。有些原因可能是全局变量和指向彼此的单例

        【讨论】:

        • is issue caused-- wow-- 你在这方面非常确定:)。
        【解决方案4】:

        问题在于(或者更确切地说:xcodebuild 中的严重错误)连接到 XCTest 服务器的超时在您发出命令 xcodebuild 的那一刻开始。超时时间为 120 秒,因此如果您的编译 + 模拟器启动时间超过 2 分钟,xcodebuild 将给出“由于超时而取消测试”错误。

        解决方案是将构建分解为两个命令。一种用于构建,一种用于运行测试:

        > xcodebuild clean build build-for-testing <other options>
        > xcodebuild test-without-building <other options>
        

        这将解决超时问题,因为 test-without-building 操作不必先编译。

        【讨论】:

        • 嗯。至少在我的情况下,这听起来不对——我是从 Xcode UI 手动运行测试,而不是使用 xcodebuild
        【解决方案5】:

        我在 7.3.1、iPad 9.3.3、Mac 10.11.6 上遇到了同样的问题

        配置文件很好,在这方面没有问题。

        从 OP 提到的步骤中得到提示,在重新启动 iPad 和 XCode 两次(按此顺序)后问题就消失了。重新启动 XCode 后,我不得不拔下 iPad 并重新插入。

        不必删除派生数据或重新启动 Mac。

        我的朋友也遇到了类似的问题,并通过提供示例项目寻求 Apple 技术支持。 Apple 技术支持团队的回应是要求他提交错误

        【讨论】:

        • 你节省了我的时间。谢谢。
        【解决方案6】:

        我和你有同样的问题。我和你一样尝试了所有可能的方式。 仍然没有找到解决它的根本原因。这个问题就像 Xcode8 引起的,但我找不到任何设备日志或错误消息来证明它。

        更新: 我的设备 iPhone6s (9.3.1 -> 9.3.2) iPhone5 (9.3.1 -> 9.3.2) 他们俩都出现了这个问题 Xcode 版本 7.3.1 (7D1014) Xcode-beta 版本 8.0 (8S128D)

        【讨论】:

        • 这个奇怪的问题我从来没有出现过,直到我下载了xcode8-beta并打开了几次。今天有一个新的版本更新。测试...
        • 在我安装并运行 Xcode8(第一个测试版)之前我也没有遇到此问题。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-11-20
        • 1970-01-01
        • 1970-01-01
        • 2012-07-08
        相关资源
        最近更新 更多