응용 프로그램에서 성공적인 로그인을 테스트하려고합니다.XCTest : UI 테스트의 NSUserdefaults에서 값을 가져 오지 못했습니다. 클래스
TestClass
에서 NSUserdefault
에 Bool
의 값을 가져 오는데,이 값은 앱에 로그인 할 때 true로 설정됩니다.
코드 : LoginViewController :의 ViewController
-(void) onGetSyncStatusChange:(SUPSyncStatusInfo*)info{
....
....
[[NSUserDefaults standardUserDefaults] setBool:true forKey:@"SynchronisationStatus"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
문제 : 값이 여전히 거짓 (기본값)을주고 로그인하는 동안 만 테스트 클래스에서 true로 설정되고있다.
class MarketingPadBoschUITests: XCTestCase {
override func setUp() {....}
override func tearDown() {...}
func testLoginAndSync(){
....
....
XCTAssertTrue(UserDefaults.standard.bool(forKey: "SynchronisationStatus"),"Synchronisation Issue")
print("Printing SynchronisationStatus ::: ",UserDefaults.standard.bool(forKey: "SynchronisationStatus"))
}
}
누구나 코드에서 값 세트가 testClass에서 검색되지 않는 이유를 알 수 있습니까? Smriti
앱의 번들 ID로 사용자 기본값을 초기화 해 볼 수 있습니까? 또한 올바른 방법으로 비동기 코드를 테스트하고 있습니까? – GoodSp33d
테스트에서'onGetSyncStatusChange'를 호출합니까? – dasdom
@ GoodSp33d : 예, 응용 프로그램 번들 ID를 사용하여 userdefault를 초기화 해 보았습니다. NSUserDefaults * userDef = [[NSUserDefaults alloc] initWithSuiteName : @ "com.infosys.marketingpadbshdevtest2"]; 동기화가 진행된 후에도 여전히 거짓이 표시됩니다. 또한 비동기 작업에 대한 XCTwaiter 사용하고 있습니다. – Smriti10