【问题标题】:Can I check push notifications using Xcode's UI test?我可以使用 Xcode UI 测试检查推送通知吗?
【发布时间】:2017-11-16 07:41:37
【问题描述】:

我们有一些应用程序需要定期检查推送通知。我们可以通过 Xcode UI 测试检查推送通知吗?

【问题讨论】:

  • 我对我的回答做了一些修改,请看一下

标签: push-notification xctest xcode-ui-testing


【解决方案1】:

免责声明:我没有这样做...

您无法生成令牌...所以我答案是否定的!可以做的是使用存根数据模拟您的 notificationManager。

使用您测试的存根数据:

  1. 您的回调函数是否下载想要的内容?
  2. 或者假设您在应用程序处于前台时收到警报:您是 显示警报?

否则,如果您纯粹是为了测试应用程序在收到通知时是否抛出callback,那么您正在测试操作系统,这是错误的。你应该只测试你自己的代码。

通过测试你的 notificationManager 我大致的意思是:

func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable: Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {

        NotificationManager.shared.handle(userInfo)
}

你的 NotificationManager 类

func handleAPNSMessage(_ message:[AnyHashable: Any]) {

if let aps = message["aps"] as? NSDictionary {
    if let alert = aps["alert"] as? NSDictionary {
        if let message = alert["message"] as? NSString {
           //Do stuff
        }
    } else if let alert = aps["alert"] as? NSString {
        //Do stuff
        }
    }
}

源自here

现在你要做的是,你使用一个看起来与服务器发送给你的 JSON 对象相同的 JSON 对象来模拟调用 handleAPNSMessage

如果您想发疯并真正复制远程通知,那么您可以使用自己的存根数据并创建本地通知...并查看应用程序是否按预期工作...

编辑:

确保您看到How can I test Apple Push Notification Service without an iPhone?

【讨论】:

  • 我可以通过我们开发的工具触发推送通知。那不是问题。我在问是否可以通过 XCTestCase 从推送通知中获取元素及其标识符?
  • @Confused 不确定“元素”和“标识符”是什么意思。我的意思是你正在通过有效载荷发送一个对象,对吗?你可以获得它的所有键/值——假设你可以触发它
  • 我问了这个关于 XCTest UI 测试的问题,而不是与通知相关的机制。
  • @Confused 你试过Xcode的记录功能吗?
  • @Confused,你是如何用 uitests 触发推送通知的?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-10
  • 2022-06-17
  • 2016-03-30
相关资源
最近更新 更多