2017-10-16 8 views
0

キーチェーンを使用する方法が正しいことと、ロード時にデータが同じ形式であることを確認するために、いくつかの単体テストがあります。Xcode9テストでキーチェーンを使用できない

XCode 9にアップデートするまで、テストは正常に実行されていました。現在、KeychainServiceは-50(保存されません)を返します。

このquestionによると、Hostをユニットテストに追加することで解決しました。しかし、私のテストはフレームワークプロジェクトにあり、ホストとして使うアプリはありません。

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、Swift4で完全に機能する_KeyChain_アクセスを持っています。ここでは何の異常も経験されていません。あなたのものと比較して不具合を見つけるためにAppleのサイトの公式の[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を参照)。

アプリターゲットを追加し、ユニットテストバンドルのホストアプリケーションとして設定するだけです。

関連する問題