在模拟器中运行应用程序时删除本地通知的iOS权限警报

时间:2015-05-02 22:22:21

标签: ios kif ios-permissions

我试图在KIF上在一个应用程序上编写验收测试,该应用程序很早就要求提供本地通知权限。不幸的是,由于iOS模拟器的安全原因it isn't possible to automate accepting iOS permission alerts using KIF。根据{{​​3}},有些方法可以禁用位置,地址簿,日历和照片的权限提醒,但我无法找到禁用本地通知权限的方法。我尝试了链接问题的权利方法,但没有以下任何键工作:

kTCCServiceNotifications
kTCCServiceNotification
kTCCServiceLocalNotification
kTCCServiceLocalNotifications

还有其他想法吗?现在我通过更改生产代码来有效地解决这个问题,以便在验收测试运行时有条件地禁用本地通知,但理想情况下我不会这样做。

2 个答案:

答案 0 :(得分:2)

不幸的是,我不认为在自动化测试中有一个很好的方法可以做到这一点。我知道即使重置模拟器也不足以重置权限。我会将您的测试设计为不测试系统调用,而是测试您自己的应用程序代码。

根据用户是否允许通知来测试不同功能的一种方法是提取调用以检查权限,然后在测试中将此方法存根。这种方法是最佳实践,因为目标不是测试iOS是否有效,而是应用程序代码是否正确。

答案 1 :(得分:0)

可以通过在applicationState.plist中授予权限来抑制通知权限:

  • 在模拟器上运行您的应用,然后点击"确定"任何权限弹出窗口
  • 导航至"〜/ Library / Developer / CoreSimulator / Devices / {$ deviceId} /data/Library/BackBoard/applicationState.plist"
  • 在引导它之前,将UI测试模拟器的applicationState.plist替换为上面的那个