XCTests在物理设备上失败:“由于超时而取消testing…”
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编写的。
我见过一些类似的post:
- 无法在iOS设备上运行XCTests
- 通过JNLP使用Jenkins时,iOStesting不会在模拟器上运行
那些其他的post谈到这个问题是由于代码签名引起的。 代码签名似乎不是我的问题 – 我已经看过KeyChain Access实用程序,并没有看到任何相关的过期证书。 此外,到目前为止(非常暂时)解决我的问题是重新启动我的iPhone。 (不幸的是,这种修复不会持续很长时间 – 也许是XCtests的一些运行,问题再次出现)。 我没有运行jenkins,只是XCTests。
我已经尝试重新启动Xcode并从DerivedData文件夹中删除所有文件/文件夹,但这些都不能解决问题。
我只是安装了Xcode8(第一个testing版)。 但除了启动一两次之外,我一般不会使用它。 这个问题在刚刚安装之后出现,似乎很奇怪。
16/25/16更新
我已经把这个问题缩小了一些。 与超时问题同时出现几个其他症状:
- 控制台从XCTest文件中的
print
语句直接logging停止。 - 定时器的失败 – 这实际上是问题的根源。 我的testing涉及首先等待一些服务器交互,发生。 但等待使用NSTimer从不执行callback。
- 断点停止工作。
似乎值得注意的是,我正在手动运行这些XCTest。 也就是说,我正在分别运行每个testing,因此每个testing都涉及一个构build。
另外,到目前为止,我已经testing了以下内容:
- 重新启动Xcode(没有帮助)
- 重新启动Mac OS X(没有帮助)
- 删除派生的数据内容(没有帮助)
- 重新启动iPhone–可以帮助,但只能再次运行一些Xcodetesting。
- 试图运行与iPhone上的热点与iPhone(没有改变问题)
- TODO:用模拟器运行
- 这可能是一个电缆或USB端口的问题? 更换连接设备的电缆没有帮助。
- 删除应用程序并重新安装/重build不起作用。
- 尝试不同的硬件(运行iOS 9.3.2的iPad Air)。 同样的问题。
我的configuration是:iOS 9.3.2,Xcode 7.3.1,Mac OS X 10.11.5(15F34)。
问题出在xcodebuild这个事实上(或者说是一个严重的bug),连接到XCTest服务器的超时在你发出命令xcodebuild的那一刻开始。 超时时间是120秒,所以如果你的编译+启动模拟器的时间超过2分钟,xcodebuild会给这个“取消testing超时”的错误。
解决scheme是将构build分解成两个命令。 一个用于build设,一个用于运行testing:
> xcodebuild clean build build-for-testing <other options> > xcodebuild test-without-building <other options>
这将解决超时问题,因为无需testing的动作不必先编译。
我有与7.3.1,iPad 9.3.3,Mac 10.11.6相同的问题
configuration文件很好,没有问题。
从OP提到的步骤提示,重新启动iPad和XCode两次(按此顺序),问题就消失了。 重新启动XCode后,我不得不拔下iPad并重新插入。
没有必要删除派生数据或重新启动Mac。
我的朋友也面临类似的问题,并通过提供示例项目寻求苹果技术支持。 苹果技术支持团队回应,要求他提交一个错误
我和你有同样的问题。 我像你一样尽可能地尝试。 而且还没有find解决的根本原因。 这个问题就像是由Xcode8引起的,但我找不到任何设备日志或错误信息来certificate它。
更新:我的设备iPhone6s(9.3.1 – > 9.3.2)iPhone5(9.3.1 – > 9.3.2)他们都出现这个问题Xcode版本7.3.1(7D1014)Xcode-beta版本8.0(8S128D)
这是由代码中的无限循环引起的问题。 我有同样的错误,但我删除了一段代码造成的问题,它工作正常。 Xcode不给你很多信息工作。 一些原因可能是一个全局variables和一个单一的指向对方