2015-11-03 14 views
5

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

+0

Welchen Benachrichtigungsdienst verwenden Sie? –

+0

Ich verwende einen Hintergrunddienst, der alle paar Tage eine Benachrichtigung sendet. – user12345

+0

Ich meine, verwenden Sie einfache Benachrichtigung oder Push-Benachrichtigung? –

Antwort

1

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 oder People 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 ist UI Automator jetzt auf Android Instrumentation basiert ...". Und weil davon können wir UIAutomator Tests sowie Espresso Tests mit Instrumentation 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.

7

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'` 
+0

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. –

Verwandte Themen