2017-10-04 8 views
0

ユニットテストがエラーで、デバイス上で実行することはできません[__NSPlaceholderArray initWithObjects:カウント:]:オブジェクトからはnilオブジェクトを挿入しようとする試みを実際のデバイス上でユニットテストを実行するときに、[1]

[__NSPlaceholderArray initWithObjects:count:]: attempt to insert nil object from objects[1] 

ユニットを実行していないときのAppが正常に起動しますテストとユニットテストは、同じデバイスタイプとOS(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を使用しています)
  • クリーンプロジェクト
  • 再起動デバイス(iPhone 6とiOS版10.3.3)
  • は、新しいXcodeの9.0
  • シエラからHIGへのアップデートのMacOSで試してみてください別のデバイス(iOSの10.3.2とiPhone 6S)
  • で試してみてください時間シエラ
  • が原因である可能性がありますどのような派生データフォルダ

を削除しますか?

答えて

0

私は根本的な原因は見つかりませんでしたが、私はとにかくやりたかった単体テストのスピードを上げるためにAppDelegateを切り替えるためにthis techniqueを適用しました。そして単体テストの実行時にクラッシュはありません。

したがって、AppDelegateには、ユニットテストを実行しているときにのみアプリケーションがクラッシュするようなものでなければなりません。

関連する問題