是否有人遇到过下列单元测试终止日志?测试总是在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
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
遇到您描述的单元测试在iOS 11和12模拟器上终止的问题,错误信息表明“Capability 'request background assertion capability' has already been registered.”,这通常意味着您的应用尝试重复注册一个已经存在的能力(capability)。这可能是由于XCTest框架内部或与Kiwi测试框架交互时的不兼容性导致的。
以下是一些建议来解决这个问题:
更新Xcode和iOS模拟器:确保您使用的是Xcode的最新版本以及对应的iOS模拟器。有时候,这些问题会在后续的Xcode版本中得到修复。
检查测试代码中的重复初始化:回顾您的测试代码,特别是涉及到后台任务、权限请求或者任何可能注册系统能力的部分,确认没有地方在重复调用注册相同的能力。
Kiwi框架兼容性:考虑到您使用的是Kiwi测试框架,可能存在与较新XCTest框架的兼容性问题。查看Kiwi的官方文档或GitHub页面,看是否有已知的与您使用的Xcode版本相关的issue,并查找是否有更新或解决方案。
移除并重新添加测试目标:尝试从项目中移除测试目标,然后重新创建,以确保所有配置都是干净且最新的。
禁用后台模式需求:如果测试中确实需要请求后台执行时间,尝试在测试环境中临时禁用这部分逻辑,看看是否能绕过这个崩溃点。
查看第三方库依赖:如果您项目中有使用到其他第三方库,它们也可能注册了相同的后台执行能力。检查这些库的文档或源码,看是否有已知的冲突或提供特定的测试配置选项。
论坛和社区求助:在Stack Overflow或Apple Developer论坛上搜索类似问题,或者直接发帖询问。有可能其他开发者已经遇到并解决了同样的问题。
简化测试环境:尝试在一个极简的测试环境中复现问题,只包含最基本的测试用例和必要的设置,逐步添加复杂度直到找到触发问题的具体点。
希望这些建议能帮助您解决问题。如果问题依旧,建议详细记录问题发生的具体步骤和环境,包括所有相关软件的版本号,以便于进一步排查。