我的Android应用有一个服务,根据应用运行次数等参数向用户发送通知。在不同的情况下,通知会在不同的时间发送。我想测试是否在所有不同的情况下通知都能在正确的时间发送。Android提供了这样一种测试的方法吗?
我的Android应用有一个服务,根据应用运行次数等参数向用户发送通知。在不同的情况下,通知会在不同的时间发送。我想测试是否在所有不同的情况下通知都能在正确的时间发送。Android提供了这样一种测试的方法吗?
使用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'
请阅读本文
http://qathread.blogspot.com/2015/05/espresso-uiautomator-perfect-tandem.html
以下是有关此主题的详细解释:
Android的
Espresso
是完美且快速的测试自动化框架,但它有一个重要的限制-您只允许在测试上下文中操作。这意味着,无法自动化测试应用程序功能,例如:
- 应用程序推送通知
- 联系人同步
- 从另一个应用程序导航到您正在测试的应用程序
因为您需要从移动设备处理其他应用程序-例如,
NotificationBar
,Contacts
或People
应用程序等。事实上,在
UIAutomator 2.0
发布之前是不可能的。如Android开发者博客文章所述-“......最重要的是,UI Automator
现在基于Android Instrumentation......”,因此我们可以使用Instrumentation test runner
运行UIAutomator
测试以及Espresso
测试。除此之外,我们还可以将UIAutomator测试与
Espresso
测试结合在一起,这为我们提供了对手机和正在测试的应用程序的真正控制和掌握。