- 我正在研究一個需要與cocoalibspotify集成的項目。我有一些針對導入CocoaLibSpotify.h的類的單元測試用例。這些測試案例已經失敗,出現以下堆棧跟蹤:
斷言失敗的NSString *基地:: deviceIdFromKeychain()()/用戶/ Spotify的-buildagent/buildAgent /工作/ 1e0ce8a77adfb2dc /客戶/基/ _apple/_ios/os_ios.mm:287 2013-10-20 11:14:03.505 *因未捕獲異常'NSInternalInconsistencyException'而終止應用程序,原因:'獲取設備ID時出現鑰匙串錯誤,不可恢復' *第一次調用堆棧: (0x30f0cf53 0x3b2366af 0x30f0ce2d 0x318b41df 0x2d142f 0x2d1a09 0x2ce6db 0x17b1b5 0x1798b3 0x30ed81b9 0x30ed753b 0x30ed5e45 0x30e40ce7 0x30e84803 0x179b1d 0x318efe27 0x3b85dc1d 0x3b85db8f 0x3b85bc90) 的libC++ abi.dylib:TERMIN處理未捕獲的類型爲NSException的異常獲取設備ID時出現鑰匙串錯誤
引發異常的方法位於SPSession.m類中:CFRunLoopRun();
+(void)runBackgroundRunloop:(dispatch_block_t)runLoopReadyBlock {
@autoreleasepool {
[NSThread currentThread].name = @"com.spotify.CocoaLibSpotify";
[runloopReadyLock lock];
libspotify_runloop = CFRunLoopGetCurrent();
sleep(1);
libspotifyThread = [NSThread currentThread];
// Use a custom, no-op run loop source to keep the loop alive and fast.
CFRunLoopSourceContext libspotify_source_context;
memset(&libspotify_source_context, 0, sizeof(CFRunLoopSourceContext));
libspotify_runloop_source = CFRunLoopSourceCreate(NULL, 0, &libspotify_source_context);
CFRunLoopAddSource(libspotify_runloop, libspotify_runloop_source, kCFRunLoopDefaultMode);
[runloopReadyLock unlockWithCondition:1];
CFRunLoopRun();
CFRelease(libspotify_runloop_source);
CFRelease(libspotify_runloop);
libspotify_runloop_source = NULL;
libspotify_runloop = NULL;
libspotifyThread = nil;
}
}
我不知道是什麼導致錯誤或如何解決它。有沒有人對此有任何想法?
感謝,
謝謝你的迴應。單元測試在ios7 XCTest框架下運行。 CocoaLibSpotify自己的單元測試套件可以正確運行。手動測試時,我的應用運行良好。它只是單元測試運行失敗。 「設備已解鎖」是什麼意思?如何確定我的設備是否已解鎖?謝謝 –