My android app has a service which sends notifications to user based on parameters like number of runs of the app. The notifications are sent at different times in different situations. I want to test whether notifications are sent at the right times in all the different cases. Does android provide a way of such a testing ?
Testing Notification using UIAutomator:
Just go through the below code. It will help you in testing the notification.
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);
Don’t forget to add the UIAutomator dependencies in
// UIAutomator dependency androidTestCompile 'com.android.support.test.uiautomator:uiautomator-v18:2.1.1'
Please read this article
Here is a nice explanation of this topic:
Espressofor Android is perfect and fast test automation framework,
but it has one important limitation – you are allowed to operate only
inside your app under test context.
This means, it is not possible to automate tests for app features such as:
- application push notifications
- contact synchronization
- navigating from another app to your app under test,
Since you have to deal with other apps from the mobile device –
In fact it wasn’t possible until the release of
UIAutomator 2.0. As
stated in Android Developers blog post – “…Most importantly,
UIis now based on Android Instrumentation…”. And because
of that we can run
UIAutomatortests as well as
Instrumentation test runner.
In addition to that we can combine UIAutomator tests together with
Espressotests and this gives us the real power and control over the
phone and application under test.