2015-11-03 19 views
5

La mia app Android ha un servizio che invia notifiche all'utente in base a parametri come il numero di esecuzioni dell'app. Le notifiche vengono inviate in momenti diversi in diverse situazioni. Voglio verificare se le notifiche vengono inviate al momento giusto in tutti i diversi casi. Android fornisce un modo di test del genere?Test delle notifiche su Android

+0

Quale servizio di notifica si sta utilizzando? –

+0

Sto utilizzando un servizio in background che invia una notifica ogni pochi giorni. – user12345

+0

Voglio dire, stai usando una notifica semplice o una notifica push? –

risposta

1

Leggi prega di questo articolo

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

Qui si dovrebbe trovare bella spiegazione di questo argomento:

Espresso per Android è prova perfetta e veloce framework per l'automazione, ma ha un importante limitazione: è consentito operare solo con all'interno della propria app in un contesto di test.

Ciò significa che non è possibile automatizzare test per tale applicazione caratteristiche come:

  • notifiche applicazione spinta
  • sincronizzazione dei contatti
  • navigazione da un'altra applicazione per l'app in prova,

dal momento che si ha a che fare con altre app dal dispositivo mobile - NotificationBar, Contacts o People app, ecc.

In effetti non è stato possibile fino al rilascio di UIAutomator 2.0. Come indicato nel post del blog degli sviluppatori Android: "... Ancora più importante, lo UI Automator è ora basato su Strumentazione Android ...". E poiché di quello che possiamo eseguire test UIAutomator e Espresso test utilizzando Instrumentation test runner.

In aggiunta a ciò possiamo combinare UIAutomator mette alla prova con Espresso test e questo ci dà il vero potere e il controllo del telefono e l'applicazione in prova.

7

Notifica Test con UIAutomator: -

Basta passare attraverso il codice qui sotto. Ti aiuterà a testare la notifica.

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

Non dimenticate di aggiungere le dipendenze UIAutomator in build.gradle.

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

inserita da @ dcr24 Non ho ancora abbastanza reputazione per commentare ancora. La risposta di Prem Choudhary è piuttosto ingegnosa ma è importante notare che funziona solo sulla premessa che il dispositivo è sbloccato, altrimenti device.openNotification() non funzionerà per la schermata di blocco. –

Problemi correlati