Meine Android App verfügt über einen Dienst, der Benachrichtigungen an den Benutzer basierend auf Parametern wie die Anzahl der Läufe der App sendet. Die Benachrichtigungen werden zu verschiedenen Zeiten in verschiedenen Situationen gesendet. Ich möchte testen, ob Benachrichtigungen in den verschiedenen Fällen zu den richtigen Zeiten gesendet werden. Bietet Android eine Möglichkeit für eine solche Prüfung?Testen von Benachrichtigungen in Android
Antwort
lesen Sie in diesem Artikel
http://qathread.blogspot.com/2015/05/espresso-uiautomator-perfect-tandem.html
Hier können Sie schöne Erklärung zu diesem Thema finden würde:
Espresso
für Android ist perfekt und schnellen Test Automation Framework, aber es hat eine wichtige Einschränkung - Sie dürfen nur innerhalb Ihrer App im Testkontext betreiben.Das bedeutet, dass es nicht möglich ist, Tests für eine solche App Funktionen wie zu automatisieren: Benachrichtigungen
- Anwendung Push
- Kontaktsynchronisierung
- von einer anderen App zu App im Test, die Navigation
da Sie mit anderen Apps vom mobilen Gerät umgehen müssen -
NotificationBar
,Contacts
oderPeople
App usw.In der Tat war es bis zur Veröffentlichung von
UIAutomator 2.0
nicht möglich. Als in Android-Entwickler-Blog-Post angegeben - "... Am wichtigsten istUI Automator
jetzt auf Android Instrumentation basiert ...". Und weil davon können wirUIAutomator
Tests sowieEspresso
Tests mitInstrumentation test runner
ausführen.Zusätzlich zu, dass wir kombinieren UIAutomator testet zusammen mit
Espresso
Tests und das gibt uns die wirkliche Macht und Kontrolle über das Telefon und Anwendung in der Prüfung.
Testing Mitteilung UIAutomator mit: -
Nur durch den Code unten gehen. Es wird Ihnen beim Testen der Benachrichtigung helfen.
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);`
Vergessen Sie nicht die UIAutomator Abhängigkeiten in build.gradle hinzuzufügen.
`//UIAutomator dependency
androidTestCompile 'com.android.support.test.uiautomator:uiautomator-v18:2.1.1'`
geschrieben von @ dcr24 Ich habe noch nicht genug Reputation zu kommentieren. Prem Choudhary's Antwort ist ziemlich genial, aber es ist wichtig zu beachten, dass dies nur unter der Voraussetzung funktioniert, dass das Gerät entsperrt ist, sonst funktioniert device.openNotification() nicht für den Sperrbildschirm. –
Welchen Benachrichtigungsdienst verwenden Sie? –
Ich verwende einen Hintergrunddienst, der alle paar Tage eine Benachrichtigung sendet. – user12345
Ich meine, verwenden Sie einfache Benachrichtigung oder Push-Benachrichtigung? –