在安卓中测试通知

10

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


你使用哪个通知服务? - Shishupal Shakya
我正在使用后台服务,每隔几天发送一次通知。 - Gaganpreet
我的意思是,你使用的是简单通知还是推送通知? - Shishupal Shakya
2个回答

18

使用UIAutomator进行通知测试:

只需按照以下代码操作,它将帮助您测试通知。

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' 

2
由@dcr24发布,我还没有足够的声望来评论。Prem Choudhary的答案非常巧妙,但重要的是要注意,这仅适用于设备已解锁的前提下,否则device.openNotification()将无法在锁屏状态下工作。 - Nicolas Straub

3

请阅读本文

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

以下是有关此主题的详细解释:

Android的Espresso是完美且快速的测试自动化框架,但它有一个重要的限制-您只允许在测试上下文中操作。

这意味着,无法自动化测试应用程序功能,例如:

  • 应用程序推送通知
  • 联系人同步
  • 从另一个应用程序导航到您正在测试的应用程序

因为您需要从移动设备处理其他应用程序-例如,NotificationBarContactsPeople应用程序等。

事实上,在UIAutomator 2.0发布之前是不可能的。如Android开发者博客文章所述-“......最重要的是,UI Automator现在基于Android Instrumentation......”,因此我们可以使用Instrumentation test runner运行UIAutomator测试以及Espresso测试。

除此之外,我们还可以将UIAutomator测试与Espresso测试结合在一起,这为我们提供了对手机和正在测试的应用程序的真正控制和掌握。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接