XCTest:UI测试类中的NSUserdefaults中未检索到的值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了XCTest:UI测试类中的NSUserdefaults中未检索到的值相关的知识,希望对你有一定的参考价值。
我试图在应用程序中测试成功登录。
在TestClass
中,我在Bool
中获取NSUserdefault
的值,当在app中登录成功时设置为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类中检索保存在应用程序代码中的UserDefault值。如果我们希望访问这些值,我们可以在UnitTest类中这样做。
在UITest类中,我设法通过在登录后在userdefault中编写自己的布尔键来检查同步状态,并在必要时检查其他测试函数中的键的状态(此键只能在UITest类中访问,而不能在外部访问)。
以上是关于XCTest:UI测试类中的NSUserdefaults中未检索到的值的主要内容,如果未能解决你的问题,请参考以下文章