【发布时间】:2017-10-04 13:11:21
【问题描述】:
单元测试无法在出现错误的设备上运行
[__NSPlaceholderArray initWithObjects:count:]: attempt to insert nil object from objects[1]
应用程序在不运行单元测试时正常启动,并且单元测试在相同设备类型和操作系统(iPhone 6、iOS 10.3.3)的模拟器中运行正常。
完整的堆栈跟踪是
* thread #1, queue = 'com.apple.main-thread', stop reason = signal SIGABRT
frame #0: 0x0000000180c79014 libsystem_kernel.dylib`__pthread_kill + 8
frame #1: 0x0000000180d43264 libsystem_pthread.dylib`pthread_kill + 112
frame #2: 0x0000000180bed9c4 libsystem_c.dylib`abort + 140
frame #3: 0x00000001806b91b0 libc++abi.dylib`abort_message + 132
frame #4: 0x00000001806d2c04 libc++abi.dylib`default_terminate_handler() + 304
frame #5: 0x00000001806e0820 libobjc.A.dylib`_objc_terminate() + 124
frame #6: 0x00000001806cf5d4 libc++abi.dylib`std::__terminate(void (*)()) + 16
frame #7: 0x00000001806cf1a8 libc++abi.dylib`__cxa_rethrow + 144
frame #8: 0x00000001806e06f8 libobjc.A.dylib`objc_exception_rethrow + 44
frame #9: 0x0000000181b5ae10 CoreFoundation`CFRunLoopRunSpecific + 532
frame #10: 0x0000000187e1afc8 UIKit`-[UIApplication _run] + 652
frame #11: 0x0000000187e15c9c UIKit`UIApplicationMain + 208
* frame #12: 0x00000001000d08d0 <AppName>`main(argc=9, argv=0x000000016fd33038) at main.m:16
frame #13: 0x0000000180b6959c libdyld.dylib`start + 4
开始单元测试时,它看起来像一个初始化问题。这些以前有效,但不再有效,不确定有什么不同。我已经恢复到以前的版本,我确信测试在哪里运行,但我仍然发现同样的问题。它看起来像我的环境中的东西。
我尝试过的没有效果的事情:
- 重新安装 Xcode(我使用的是 Xcode 8.3.3)
- 清理项目(甚至清理项目文件夹)
- 重启设备(装有 iOS 10.3.3 的 iPhone 6)
- 尝试使用其他设备(装有 iOS 10.3.2 的 iPhone 6s)
- 尝试使用更新的 Xcode 9.0
- 将 macOS 从 Sierra 更新到 High Sierra
- 删除派生数据文件夹
可能是什么原因?
【问题讨论】:
标签: ios objective-c iphone xcode unit-testing