2017-10-16 57 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

只需添加一個應用目標並將其設置爲您的單元測試包的主機應用程序。