2015-11-03 75 views
5

我的android应用程序有一个服务,它根据应用程序的运行次数等参数向用户发送通知。通知在不同情况下的不同时间发送。我想测试在所有不同情况下是否在正确的时间发送通知。 Android是否提供了这种测试的方式?Android中的测试通知

+0

您正在使用哪种通知服务? –

+0

我正在使用后台服务,每隔几天发送一次通知。 – user12345

+0

我的意思是,你使用简单的通知或推送通知? –

回答

1

阅读请这篇文章

http://qathread.blogspot.com/2015/05/espresso-uiautomator-perfect-tandem.html

在这里,你会发现这个话题很好的解释:

Espresso为Android是完美的和快速的自动化测试框架, 但它有一个重要的限制 - 您只能在测试环境下的应用程序内运行 。

这意味着它是不可能像这样的应用自动化测试 特点:

  • 应用推送通知
  • 联系人同步
  • 下试从另一个应用程序导航到你的应用程序,

因为您必须处理来自移动设备的其他应用程序 - NotificationBarContactsPeople应用程序等

事实上,它是不可能的,直到发布UIAutomator 2.0。正如 在Android Developers博客文章中所述 - “...最重要的是,UI Automator现在基于Android Instrumentation ...”。并且因为我们可以运行UIAutomator测试以及Espresso测试 使用Instrumentation test runner

此外,我们可以结合UIAutomator与 Espresso测试一起测试,这为我们提供了真正的权力和控制的 手机和应用测试。使用UIAutomator

7

测试通知: -

只需经过下面的代码。它会帮助你测试通知。

UiDevice device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation()); 
device.openNotification(); 
device.wait(Until.hasObject(By.text(NOTIFICATION_TITLE)), TIMEOUT); 
UiObject2 title = device.findObject(By.text(NOTIFICATION_TITLE)); 
UiObject2 text = device.findObject(By.text(NOTIFICATION_TEXT)); 
assertEquals(NOTIFICATION_TITLE, title.getText()); 
assertEquals(NOTIFICATION_TEXT, text.getText()); 
title.click(); 
device.wait(Until.hasObject(By.text(ESPRESSO.getName())), TIMEOUT);` 

不要忘记在build.gradle中添加UIAutomator依赖关系。

`//UIAutomator dependency 
    androidTestCompile 'com.android.support.test.uiautomator:uiautomator-v18:2.1.1'` 
+0

由@ dcr24发布我还没有足够的知名度评论。 Prem Choudhary的回答非常巧妙,但重要的是要注意,这只在解锁设备的前提下才起作用,否则device.openNotification()将不适用于锁定屏幕。 –