【问题标题】:_XCTFailInCurrentTest should only be called while a test is running_XCTFailInCurrentTest 只能在测试运行时调用
【发布时间】:2016-05-13 14:30:55
【问题描述】:
我现在正在使用 Xcode 进行 UITesting,但出现此错误。
* void _XCTFailInCurrentTest(NSString *,
...)(),
/Library/Caches/com.apple.xbs/Sources/XCTest_Sim/XCTest-10112/XCTestFramework/Classes/XCTestCase.m:63
2016-05-13 22:31:54.961 XCTRunner[15428:168507] * 终止应用
由于未捕获的异常“NSInternalInconsistencyException”,原因:
'_XCTFailInCurrentTest 只能在测试运行时调用。
失败描述:未能收到完成
我在这里看到过其他类似的帖子。
Cannot run Xcode (7.3) UI tests in Jenkins
我正在使用 Jenkins,但现在,我直接从 Xcode 运行,我什至不能从 Xcode 运行。我该怎么办?
【问题讨论】:
标签:
ios
jenkins
xcode-ui-testing
【解决方案1】:
背景
- 我在 Xcode 7.3 (7D175) 和 iOS Simulator 9.3 中遇到了这个问题。
- 症状如下
- Test Runner 正常启动并退出。
- 之后,被测应用程序永远不会启动。
- (如果未安装被测应用,Xcode 也不会在开始测试之前安装该应用)。
- (一个副作用是录音对我也不起作用 - 我从this SO post.)获得灵感
30 秒后测试超时:
XCTRunner[36260:489138] Continuing to run tests in the background with task ID 1
2016-05-18 16:17:25.720 XCTRunner[36260:489138] *** Assertion failure in void _XCTFailInCurrentTest(NSString *, ...)(), /Library/Caches/com.apple.xbs/Sources/XCTest_Sim/XCTest-10112/XCTestFramework/Classes/XCTestCase.m:63
2016-05-18 16:17:25.723 XCTRunner[36260:489138] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '_XCTFailInCurrentTest should only be called while a test is running.
Failure description: Failed to receive completion for <XCDeviceEvent:0x7fddc241f970 page 12 usage 64 duration 0.01s within 30.0s'
对我有用的解决方法是:
- 重置模拟器。
- 在 UI 测试目标的构建设置中检查部署目标是否设置为 iOS 9.x。 (在我的情况下,它设置为 iOS 8)
- 更改目标后,清理并重建。
执行这些步骤后,Xcode 能够在测试之前安装应用程序,录制工作正常,并且错误消失了。
【解决方案2】:
由于某种原因模拟器已损坏。就我而言,一旦在同一点上,就不可能启动任何测试。就我而言,它的工作原理是重置模拟器(菜单模拟器|重置内容和设置...)或切换到任何其他模拟器。
【解决方案3】:
我们尝试了其他回复中的提示,但对我们不起作用。
完全重新安装 Xcode 7.3 解决了我们的问题。
- 移除 Xcode
- 重启
- 重新安装 Xcode
- 成功