15

我正在尝试在KIF中编写一个应用程序的验收测试,该应用程序很早就要求本地通知权限。不幸的是,由于 iOS 模拟器的安全原因,无法使用 KIF 自动接受 iOS 权限警报。根据https://stackoverflow.com/a/28443743/62,似乎有办法禁用位置、通讯录、日历和照片的权限警报,但我找不到禁用本地通知权限的方法. 我尝试了链接问题中的权利方法,但以下键均无效:

kTCCServiceNotifications
kTCCServiceNotification
kTCCServiceLocalNotification
kTCCServiceLocalNotifications

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

4

2 回答 2

2

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

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

于 2015-07-16T12:40:37.643 回答
0

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

  • 在模拟器上运行您的应用程序并点击“确定”以显示任何权限弹出窗口
  • 导航到“~/Library/Developer/CoreSimulator/Devices/{$deviceId}/data/Library/BackBoard/applicationState.plist”
  • 在引导之前将 UI 测试模拟器的 applicationState.plist 替换为上面的那个
于 2016-02-16T17:48:22.263 回答