无法在Jenkins

时间:2016-05-06 00:36:44

标签: ios xcode jenkins automation

我正在尝试在我本地计算机上运行的Jenkins机器上从命令行运行Xcode UI测试。但是,当我尝试在Jenkins中运行UI测试时,他们似乎无法在模拟器中启动应用程序。发生的情况是设备在模拟器中加载,UI测试目标打开,屏幕变黑。然后似乎没有任何事情发生30秒,直到我得到如下错误(我希望应用程序启动并自动开始):

2016-04-22 11:44:54.549 XCTRunner[33303:299557] Running tests...
11:44:54.707 XCTRunner[33303:299590] _XCT_testBundleReadyWithProtocolVersion:minimumVersion: reply received
11:44:54.711 XCTRunner[33303:299587] _IDE_startExecutingTestPlanWithProtocolVersion:16
2016-04-22 11:45:24.730 XCTRunner[33303:299557] *** Assertion failure in void _XCTFailInCurrentTest(NSString *, ...)(), /Library/Caches/com.apple.xbs/Sources/XCTest_Sim/XCTest-10112/XCTestFramework/Classes/XCTestCase.m:63
2016-04-22 11:45:24.732 XCTRunner[33303:299557] *** 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:0x7f88c85972c0 page 12 usage 64 duration 0.01s within 30.0s'
*** First throw call stack:
(
    0   CoreFoundation                      0x0000000102369d85 __exceptionPreprocess + 165
    1   libobjc.A.dylib                     0x0000000101ddddeb objc_exception_throw + 48
    2   CoreFoundation                      0x0000000102369bea +[NSException raise:format:arguments:] + 106
    3   Foundation                          0x0000000101a27e1e -[NSAssertionHandler handleFailureInFunction:file:lineNumber:description:] + 169
    4   XCTest                              0x0000000101875bbf _XCTFailInCurrentTest + 375
    5   XCTest                              0x000000010189717c -[XCUIDevice _dispatchEventWithPage:usage:duration:] + 847
    6   XCTest                              0x00000001018c2612 XCInitializeForUITesting + 575
    7   XCTest                              0x000000010186191d -[XCTestDriver _runSuite] + 141
    8   XCTest                              0x00000001018627d1 -[XCTestDriver _checkForTestManager] + 259
    9   XCTest                              0x00000001018aca9a _XCTestMain + 628
    10  CoreFoundation                      0x000000010228f2ec __CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__ + 12
    11  CoreFoundation                      0x0000000102284f75 __CFRunLoopDoBlocks + 341
    12  CoreFoundation                      0x00000001022846d2 __CFRunLoopRun + 850
    13  CoreFoundation                      0x00000001022840f8 CFRunLoopRunSpecific + 488
    14  GraphicsServices                    0x0000000104424ad2 GSEventRunModal + 161
    15  UIKit                               0x000000010271ff09 UIApplicationMain + 171
    16  XCTRunner                           0x00000001017e68ad XCTRunner + 6317
    17  libdyld.dylib                       0x0000000104c4692d start + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException
Build step 'Execute shell' marked build as failure
Finished: FAILURE

应用程序是否无法启动,因为我的Jenkins机器无法在Xcode隐式失败测试之前足够快地打开它?或者是否有通知阻止应用程序启动?

1 个答案:

答案 0 :(得分:1)

XCTest尝试将Home按钮按下事件发送到设备,但30秒内没有收到完成通知。

我认为这与阻止主页按钮将测试目标发送到后台的通知UIAlertView无关,因为根据我的经验,此类问题会引发不同的错误消息({{1} })。

我不熟悉Jenkins解决方案,但是如果您怀疑超时太短,可以尝试按如下方式更改它(我找到一些hacky方式)。

将以下行添加到将在"Failed to background test runner within ..."之前运行的代码中(例如,添加您自己的[XCTestDriver _runSuite]函数并将此代码放入其中):

__attribute__((constructor))