不能运行在詹金斯的Xcode(7.3)UI测试(Cannot run Xcode (7.3) UI

2019-09-30 09:26发布

我试图从运行命令行詹金斯的机器,我的本地计算机上运行的Xcode的UI测试。 然而,当我尝试运行詹金斯的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

可在应用被启动失败,因为我的詹金斯的机器不能打开它足够快之前的Xcode隐含失败的考验吗? 或者有可能是从启动阻止应用程序的通知?

Answer 1:

什么情况是,XCTest试图发送Home键按下事件的设备,但没有收到通知,竣工30秒。

我不认为这有什么关系通知UIAlertView从发送测试目标的背景下,因为在我的经验,这样的问题提出了不同的错误信息封锁的主页按钮( "Failed to background test runner within ..." )。

我不熟悉詹金斯的解决方案,但如果你怀疑超时太短,你可以尝试改变它,如下所示(一些哈克的方式,我发现)。

添加以下行,将前面跑,然后一个代码[XCTestDriver _runSuite]例如,添加自己的__attribute__((constructor))功能,里面把这个代码):

extern __attribute__((weak)) void* _XCTSetEventConfirmationTimeout(NSTimeInterval);
// Change the default 30 seconds timeout.
long MY_NEW_EC_TIMEOUT = 120;
NSLog(@"Trying to call _XCTSetEventConfirmationTimeout(%ld)", MY_NEW_EC_TIMEOUT);
if (&_XCTSetEventConfirmationTimeout) {
    NSLog(@"_XCTSetEventConfirmationTimeout address found");
    _XCTSetEventConfirmationTimeout(MY_NEW_EC_TIMEOUT);
    NSLog(@"_XCTSetEventConfirmationTimeout successfully called");
} else {
    NSLog(@"_XCTSetEventConfirmationTimeout address not found");
}


文章来源: Cannot run Xcode (7.3) UI tests in Jenkins