我可以为我的应用重置模拟器的联系人和位置权限设置,以模拟首次使用场景吗?

时间:2016-05-05 00:33:59

标签: core-location abaddressbook xcode-ui-testing

我的iOS应用程序目前有一个iOS 7的部署目标(虽然我的方案运行iOS 9.2模拟器),以及与AddressBook,AddressBookUI和CoreLocation框架的链接。我在Xcode 7中有一套Swift UI测试(不在Instruments中)。当用户首次使用我的应用时,系统会要求他们在应用运行时访问其联系人及其位置。由于这涉及需要完美执行的大量代码,我希望自动化所有可能的结果并确保UI处于所需状态。

我可以使用Xcode UI测试重置模拟器的设置以访问联系人和位置吗?例如,我可以在我的测试用例类中的setUp()函数中实现它。我找到了一些关于如何响应对话框的教程,但在我到达那一点之前,我需要模拟请求权限的条件。 Here's a question that explains how to respond to such an alert.

3 个答案:

答案 0 :(得分:5)

简答:不。 UI测试没有用于重置模拟器的API(因此重置权限对话框)。我建议向Apple提交一份错误报告,解释为什么需要这个。

UI测试无法轻松测试“不愉快的路径”。在您的问题中,您提到测试所有权限流。如果不在测试之间手动重置模拟器,这将是不可能的。我建议只测试UI测试的快乐路径,并将其他案例留给单元测试。

我知道这并不理想,但现在这是一个不错的解决方法。对于它的价值,这是我在测试我们的应用程序时采用的方法。 (该应用程序要求推送通知和位置权限。)

答案 1 :(得分:1)

答案 2 :(得分:-1)

我将如何做到这一点。我会删除模拟器数据,这将删除保存的设置,希望这适用于您的情况。在斯威夫特:

let filemanager = NSFileManager.defaultManager()

do {
    try filemanager.removeItemAtPath(NSHomeDirectory())
}
catch let error as NSError {
    print("Ooops! Something went wrong: \(error)")
}

只是想出一个好的位置,把它放在你的代码和poof - 模拟器数据消失。