我正在尝试在应用程序中测试成功登录。
在TestClass
中,我正在获取Bool
中的NSUserdefault
值,该值在应用程序中成功登录时设置为true。
代码:
LoginViewController:ViewController
-(void) onGetSyncStatusChange:(SUPSyncStatusInfo*)info{
....
....
[[NSUserDefaults standardUserDefaults] setBool:true forKey:@"SynchronisationStatus"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
问题:值在登录期间被设置为true,但在测试类中为
仍为false(默认值)。
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中没有检索到代码中设置的值吗?
当做,
史密提
最佳答案
UItest类无权访问应用程序的内部状态。因此,我们无法在UITest类中检索保存在应用程序代码中的用户默认值。如果我们想访问这些值,我们可以在UnitTest类中这样做。
在UITest类中,我通过在登录后在userdefault中编写自己的布尔键,并在必要时在其他测试函数中检查键的状态来检查同步状态(该键仅在UITest类中可访问,而不在外部)。