2012-08-16 4 views
0

작성중인 IOS 프레임 워크에 대한 단위 테스트를 작성하려고합니다. Nuance의 Dragon Mobile SDK를 사용합니다. 내가 JetBrains의 'AppCode 내 단위 테스트를 실행하면이 오류를 얻을 : 나는 엑스 코드에서 테스트를 실행하면iOS 단위 테스트 실패 - 키 체인에 액세스 할 수 없습니다.

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는 시뮬레이터를 회전시켜 테스트를 실행하지만 AppCode는 필요하지 않거나 필요하지는 않습니다.

이제 뉘앙스 비트는 관련 인 이유는 내가 그것을 설정할 때 키 체인에 물건을하려고 것은 점이다 : 지금은 여기에 한 가지 대답 단지를 실행하는 것입니다 알고

[SpeechKit setupWithID:@"<snip>" 
    host:@"sandbox.nmdp.nuancemobility.net" 
    port:443 
    useSSL:NO 
    delegate:self]; 

XCode에서 테스트. 하지만 Xcode는 코드 편집 과정에서 얼마나 원시적 인지를 고려할 때 매우 어려움을 겪습니다. 더 중요한 것은, 여기서 핵심 개념을 놓치고있어 저를 귀찮게합니다.

질문 : 단원 테스트가 실행될 때 내 코드가 키 저장소에 액세스하지 못하게되는 원인은 무엇입니까? Xcode 에서조차 누구든지 이런 종류의 일을 겪었습니까?

답변

2

아직 설정하지 않았다면 단위 테스트 대상에 대한 BUNDLE_LOADER 및 TEST_HOST 빌드 설정을 앱 번들 ($ (BUILT_PRODUCTS_DIR) /AppName.app/AppName과 같은 것)을 가리 키도록 수정할 수 있습니다.

내 생각 엔 키 체인 접근이 실행중인 응용 프로그램 내에서 일어날 필요가 있다는 것입니다. 이 두 가지 설정은 OCUnit 단위 테스트가 앱 프로세스 내에서 실행되도록하는 것입니다 (예 : '논리 테스트'와 달리 Apple 용어로 '응용 프로그램 테스트').

프로젝트 마법사의 Xcode 으로 설정된 단위 테스트 묶음은 응용 프로그램 테스트로 설정되지만 나중에 추가되는 테스트 번들은 논리 테스트입니다. 나중에 유닛 테스트 타겟을 추가했다면 위의 빌드 설정을 가지고 있지 않을 수도 있습니다.

Xcode가 테스트를 그대로 실행하는 이유는 내 테스트에서 Xcode가 항상 시뮬레이터를 실행하고 번들 로더 및 테스트 호스트 설정에 관계없이 주 응용 프로그램 내에서 테스트를 실행하는 것입니다. 나는 이것이 Apple's documentation에 따르면 부정확 한 행동이라고 생각하지만 그것이하는 것처럼 보인다.

관련 문제