2015-11-03 13 views
5

Moja aplikacja dla Androida ma usługę, która wysyła powiadomienia do użytkownika na podstawie parametrów takich jak liczba uruchomień aplikacji. Powiadomienia są wysyłane o różnych porach w różnych sytuacjach. Chcę sprawdzić, czy powiadomienia są wysyłane w odpowiednim czasie we wszystkich różnych przypadkach. Czy Android zapewnia sposób takiego testowania?Testowanie powiadomień w Androidzie

+0

Z jakiej usługi powiadamiania korzystasz? –

+0

Używam usługi w tle, która wysyła powiadomienie co kilka dni. – user12345

+0

Mam na myśli, Czy korzystasz z prostego powiadomienia lub powiadomienia push? –

Odpowiedz

1

Przeczytaj proszę ten artykuł

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

Tutaj można znaleźć ładne wyjaśnienie tego tematu:

Espresso dla Androida jest doskonały i szybki Test ramy automatyki, ale ma jedną istotną ograniczenie - w aplikacji można testować tylko w kontekście testu.

Oznacza to, że nie jest możliwe, aby automatyzować testy dla takiej aplikacji funkcje, takie jak:

  • powiadomień push aplikacja
  • synchronizacja kontakt
  • żeglujących z innej aplikacji do aplikacji w ramach testu,

ponieważ masz do czynienia z innymi aplikacjami z urządzenia mobilnego - NotificationBar, Contacts lub People aplikacja, itp.

W rzeczywistości nie było to możliwe do czasu wydania UIAutomator 2.0. Podpis w blogu na temat Androida Developers - "... Najważniejsze, że UI Automator jest teraz oparty na Android Instrumentation ...". A ponieważ z tego możemy wykonać testy UIAutomator, a także Espresso testów przy użyciu Instrumentation test runner.

Poza tym możemy łączyć UIAutomator testuje razem z Espresso testów, a to daje nam realną władzę i kontrolę nad telefon i stosowania badanego.

7

Powiadomienie Testowanie przy użyciu UIAutomator: -

Wystarczy przejść przez poniższy kod. Pomoże Ci w testowaniu powiadomienia.

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);` 

Nie zapomnij dodać zależności UIAutomator w build.gradle.

`//UIAutomator dependency 
    androidTestCompile 'com.android.support.test.uiautomator:uiautomator-v18:2.1.1'` 
+0

opublikowane przez @ dcr24 Nie mam wystarczająco dużo reputacji, aby skomentować. Odpowiedź Prema Choudhary jest całkiem genialna, ale ważne jest, aby pamiętać, że działa tylko na założeniu, że urządzenie jest odblokowane, w przeciwnym razie device.openNotification() nie będzie działać na ekranie blokady. –