2017-10-16 62 views
0

我有几个单元测试来验证我使用钥匙串的方式是否正确,并且数据在加载时处于相同的形式。不能在Xcode9测试中使用钥匙串测试

测试运行正常,直到更新到XCode 9.此刻,KeychainService返回-50(未保存)。

根据此question,它通过将主机添加到单元测试来解决。但是,我的测试是在框架项目中,没有应用程序可用作主机。

let query = [ 
    kSecClass as String  : kSecClassGenericPassword as String, 
    kSecAttrAccount as String : key, 
    kSecValueData as String : data ] as [String : Any] 

SecItemDelete(query as CFDictionary) 

SecItemAdd(query as CFDictionary, nil) 

什么是推荐的解决方案?我期望在XCode中进行一些配置,将测试移到应用程序中对我来说不是一个合适的解决方案。

+0

任何相关的代码片段...?在Xcode9中,我有一个完美的_KeyChain_访问,Swift4;这里没有异常现象。您也可以查看苹果网站上的官方[GenericKeychain](https://developer.apple.com/library/content/samplecode/GenericKeychain/Introduction/Intro.html)项目,以便与您的项目进行比较并发现故障。 – holex

+0

我添加了代码示例。调用'SecItemAdd'返回-50 –

+0

澄清 - KeyChain正在工作,但不是在单元测试中 –

回答

0

使用Xcode 9测试包需要主机应用程序才能从iOS模拟器内访问钥匙串,请参阅https://stackoverflow.com/a/46317131/5082444

只需添加一个应用目标并将其设置为您的单元测试包的主机应用程序。