开发者社区 问答 正文

XCTCapabilitiesBuilder导致应用程序单元测试在启动时终止

是否有人遇到过下列单元测试终止日志?测试总是在IOS 11和12模拟器上终止,但可以在IOS 13模拟器上运行。

我试过的是:

1.Xcode 11.2.1,11.3 beta版(11C24b) 2.禁用所有单元测试 3.注释所有函数调用didFinishLaunchingWithOptions 4.我的单元测试框架:kiwi for obj-c

是否有关于XCTCapabilitiesBuilder相关错误报告的信息?谢谢!

Application Specific Information:
dyld: in dlopen()
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Capability 'request background assertion capability' has already been registered.'
terminating with uncaught exception of type NSException
abort() called
CoreSimulator 681.17 - Device: iPhone Xs Max (B8A78910-3636-4707-8E4E-5AC780B103B3) - Runtime: iOS 12.4 (16G73) - DeviceType: iPhone Xs Max

Application Specific Backtrace 1:
0   CoreFoundation                      0x000000010eeef8db __exceptionPreprocess + 331
1   libobjc.A.dylib                     0x000000010ddadac5 objc_exception_throw + 48
2   CoreFoundation                      0x000000010eeef662 +[NSException raise:format:arguments:] + 98
3   Foundation                          0x000000010adb276b -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 194
4   XCTAutomationSupport                0x0000000133f2e8f9 -[XCTCapabilitiesBuilder registerCapability:version:] + 528
5   XCTAutomationSupport                0x0000000133f2e9ab -[XCTCapabilitiesBuilder upgradeCapability:toVersion:] + 126
6   XCTest                              0x0000000133db131d XCTDaemonCapabilitiesBuilder_IOS_v6 + 58
7   XCTest                              0x0000000133db1248 XCTDaemonCapabilitiesBuilder_IOS_v12 + 15
8   XCTest                              0x0000000133db1193 XCTDaemonCapabilitiesBuilder_IOS_v18 + 15
9   XCTest                              0x0000000133db10f8 XCTDaemonCapabilitiesBuilder_IOS_v22 + 15
10  XCTest                              0x0000000133db1074 XCTDaemonCapabilitiesBuilder_IOS_v26 + 12
11  XCTest                              0x0000000133db0bba +[XCTRunnerDaemonSession daemonCapabilitiesForProtocolVersion:platform:error:] + 62
12  XCTest                              0x0000000133dafa06 +[XCTRunnerDaemonSession capabilitiesForDaemonConnection:error:] + 252
13  XCTest                              0x0000000133daf7a6 __39+[XCTRunnerDaemonSession sharedSession]_block_invoke + 95
14  libdispatch.dylib                   0x0000000111b7cd02 _dispatch_client_callout + 8
15  libdispatch.dylib                   0x0000000111b7e4cd _dispatch_once_callout + 20
16  XCTest                              0x0000000133daf745 +[XCTRunnerDaemonSession sharedSession] + 101
17  XCTest                              0x0000000133dc181e __80+[XCTRunnerIDESession daemonMediatedSessionForSessionIdentifier:delegate:error:]_block_invoke + 52
18  XCTest                              0x0000000133d3a769 +[XCTFuture futureWithTimeout:description:block:] + 211
19  XCTest                              0x0000000133dc164d +[XCTRunnerIDESession daemonMediatedSessionForSessionIdentifier:delegate:error:] + 187
20  XCTest                              0x0000000133db5f4a _XCTestMain + 858
21  libXCTestBundleInject.dylib         0x000000010973abe7 __copy_helper_block_e8_32s + 0
22  CoreFoundation                      0x000000010ee56cbc __CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__ + 12
23  CoreFoundation                      0x000000010ee56480 __CFRunLoopDoBlocks + 336
24  CoreFoundation                      0x000000010ee50d04 __CFRunLoopRun + 1252
25  CoreFoundation                      0x000000010ee504d2 CFRunLoopRunSpecific + 626
26  GraphicsServices                    0x00000001130722fe GSEventRunModal + 65
27  UIKitCore                           0x00000001196fbfc2 UIApplicationMain + 140
28  MyApp                               0x0000000106a84ff9 main + 137
29  libdyld.dylib                       0x0000000111bea541 start + 1

展开
收起
游客5akardh5cojhg 2019-12-09 00:08:44 782 分享 版权
阿里云 AI 助理回答

遇到您描述的单元测试在iOS 11和12模拟器上终止的问题,错误信息表明“Capability 'request background assertion capability' has already been registered.”,这通常意味着您的应用尝试重复注册一个已经存在的能力(capability)。这可能是由于XCTest框架内部或与Kiwi测试框架交互时的不兼容性导致的。

以下是一些建议来解决这个问题:

  1. 更新Xcode和iOS模拟器:确保您使用的是Xcode的最新版本以及对应的iOS模拟器。有时候,这些问题会在后续的Xcode版本中得到修复。

  2. 检查测试代码中的重复初始化:回顾您的测试代码,特别是涉及到后台任务、权限请求或者任何可能注册系统能力的部分,确认没有地方在重复调用注册相同的能力。

  3. Kiwi框架兼容性:考虑到您使用的是Kiwi测试框架,可能存在与较新XCTest框架的兼容性问题。查看Kiwi的官方文档或GitHub页面,看是否有已知的与您使用的Xcode版本相关的issue,并查找是否有更新或解决方案。

  4. 移除并重新添加测试目标:尝试从项目中移除测试目标,然后重新创建,以确保所有配置都是干净且最新的。

  5. 禁用后台模式需求:如果测试中确实需要请求后台执行时间,尝试在测试环境中临时禁用这部分逻辑,看看是否能绕过这个崩溃点。

  6. 查看第三方库依赖:如果您项目中有使用到其他第三方库,它们也可能注册了相同的后台执行能力。检查这些库的文档或源码,看是否有已知的冲突或提供特定的测试配置选项。

  7. 论坛和社区求助:在Stack Overflow或Apple Developer论坛上搜索类似问题,或者直接发帖询问。有可能其他开发者已经遇到并解决了同样的问题。

  8. 简化测试环境:尝试在一个极简的测试环境中复现问题,只包含最基本的测试用例和必要的设置,逐步添加复杂度直到找到触发问题的具体点。

希望这些建议能帮助您解决问题。如果问题依旧,建议详细记录问题发生的具体步骤和环境,包括所有相关软件的版本号,以便于进一步排查。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答