我正在尝试为我正在创建的 iOS 框架编写单元测试。在幕后,它使用 Nuance 的 Dragon Mobile SDK。当我在 Jetbrains 的 AppCode 中运行单元测试时,出现以下错误:
2012-08-15 17:43:48.874 otest[62547:707] *** Assertion failure in -[KeychainManager writeToKeychain], /checkout_120606-1556/NMSPClient/sdk/c/trunk/solutions/iPhone/NMSP/../../../source/oem/iphone/src/KeychainManager.m:285
Couldn't add the Keychain Item.
Unknown.m:0: error: -[NuanceVoiceRecognizerTest testExample] : Couldn't add the Keychain Item.
当我在 XCode 中运行测试时,它工作正常。事实上,XCode 启动了模拟器来运行测试,而 AppCode 似乎不需要/不需要。
现在,Nuance 位相关的原因是,当我设置它时,它试图用钥匙串做一些事情:
[SpeechKit setupWithID:@"<snip>"
host:@"sandbox.nmdp.nuancemobility.net"
port:443
useSSL:NO
delegate:self];
现在我知道一个答案就是在 XCode 中运行测试。但考虑到它在代码编辑方面的原始性,我对 XCode 的使用非常困难。更重要的是,我在这里遗漏了一些关键概念,这让我很恼火。
问题是:当单元测试运行时,可能缺少什么会导致我的代码无法访问密钥库?任何人以前都遇到过这种事情,即使是在 XCode 中?