【发布时间】:2017-09-06 21:14:00
【问题描述】:
我的测试套件在 CircleCI 上运行时无法完全通过。在套件中运行和单独运行时,一切都将在本地通过。我最终遇到了导致问题的问题,即 Apple 通知/位置权限对话框。测试仍在运行,但任何期望显示警报的测试都会失败,因为 Apple 对话框仍在屏幕上。每次您在新设备上运行完整套件或删除应用时,基本上都会发生这种情况。
我的问题是,处理这些对话的最佳方法是什么?我很确定围绕它编写 UI 测试是不可能的,因为所有 UI 测试都对排序和屏幕上的内容非常严格。测试是随机的,对话框只显示第一个需要它的测试,其余的不需要担心。
我目前的想法,但不确定如何进行:
- 模拟位置/推送通知请求,使其永远不会触发对话框。就我而言,这对我来说很难,因为我有一门可以完成所有推送和定位工作的课程。我是模仿 Apple 课程还是我自己的课程?
- 为只有 1 个触发对话框并可以关闭它的测试的测试编写单独的目标。这只会在 CI 服务器上运行时使用。这可能不起作用,因为在测试运行之间可能不使用相同的模拟器。我认为会,但不能保证。
- 将调试代码添加到实时代码以绕过其中一些对话框和权限。在 DEBUG 中运行通知时,我已经有代码,因为您实际上从未在模拟器上获得成功的令牌。我只是在调试中运行时存根假返回,以便继续测试。还有什么?如果我绝对可以帮助它,我不会诚实地考虑这个。实时代码库中已经有足够多的“测试”代码,如果可能的话,我想阻止更多。
如果有人有任何想法,希望得到一些关于如何进行的反馈或示例。
设置详情:
- ObjC
- Xcode 最新版本,支持 iOS 8 及以上版本
- 使用 KIF 和 OCMock 进行测试
【问题讨论】:
标签: ios unit-testing testing user-permissions kif