objective-c - XC测试 : Value not retrieved in NSUserdefaults in UI test Class

标签 objective-c swift ipad nsuserdefaults xctest

我正在尝试在应用中测试成功登录。

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/

相关文章:

objective-c - 对于 Objective-C 中用于访问 NSMutable 字典的每个循环

objective-c - 对于强集合实例,赋值给nil等于释放赋值给nil吗?

ios - preferredStatusBarStyle 不工作

jquery - div onclick 在 imageFlow ipad 中不起作用

ios - IPAD专用的增强现实API

objective-c - 使用 Objective C 解码 XML 实体

Objective-C 获取默认应用程序

arrays - 这个 [AnyObject] 如何作为 AnyObject 返回?

ios - Core Motion 是否需要授权/.plist 信息?

ios - 根据条件更改 CollectionView 中选定单元格的颜色