2017-10-16 2 views
0

Ich habe ein paar Komponententests, um zu überprüfen, ob die Art, wie ich mit Keychain arbeite, korrekt ist und die Daten in derselben Form sind, wenn ich sie lade.Keychain kann in Xcode9-Tests nicht verwendet werden

Die Tests liefen bis zur Aktualisierung auf XCode 9 in Ordnung. Im Moment gibt KeychainService -50 (nicht gespeichert) zurück.

Entsprechend dieser question wurde es durch Hinzufügen von Host zu Komponententests gelöst. Meine Tests befinden sich jedoch im Rahmenprojekt und es gibt keine App, die als Host verwendet werden kann.

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) 

Was ist die empfohlene Lösung? Ich erwarte nur einige Konfiguration in XCode, Verschieben von Tests in App ist keine richtige Lösung für mich.

+0

alle verwandten Code-Schnipsel ...? Ich habe einen perfekt funktionierenden Zugriff _KeyChain_ in Xcode9, Swift4; Hier wurden keine Anomalien festgestellt. Sie können auch das offizielle Projekt [GenericKeychain] (https://developer.apple.com/library/content/samplecode/GenericKeykain/Introduction/Intro.html) auf der Apple-Website ansehen, um sich mit Ihrem zu vergleichen und den Fehler zu finden. – holex

+0

Ich habe Codebeispiel hinzugefügt. Rufen Sie 'SecItemAdd' zurück -50 –

+0

Um zu verdeutlichen - KeyChain funktioniert, aber nicht in Komponententests –

Antwort

0

Mit Xcode 9 benötigen Testpakete eine Host-App für den Zugriff auf den Schlüsselbund über den iOS-Simulator, siehe https://stackoverflow.com/a/46317131/5082444.

Fügen Sie einfach ein App-Ziel hinzu und legen Sie es als Host-Anwendung für Ihr Komponententestpaket fest.

Verwandte Themen