我正在尝试在应用中测试成功登录。
在 TestClass
中,我在 NSUserdefault
中获取 Bool
的值,当在应用程序中成功登录时,该值设置为 true。
代码: 登录ViewController:ViewController
-(void) onGetSyncStatusChange:(SUPSyncStatusInfo*)info{
....
....
[[NSUserDefaults standardUserDefaults] setBool:true forKey:@"SynchronisationStatus"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
问题:值在登录期间被设置为真,但在测试类中它是 仍然给出 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 类中检索保存在应用程序代码中的 UserDefault 值。如果我们希望访问这些值,我们可以在 UnitTest 类中进行。
在 UITest 类中,我设法通过在登录后在 userdefault 中写入自己的 bool 键来检查同步状态,并在必要时检查其他测试函数中键的状态(此键只能在 UITest 类中访问,不能在外部访问)。
关于objective-c - XC测试 : Value not retrieved in NSUserdefaults in UI test Class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47525847/