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
risposta
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
oPeople
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, loUI Automator
è ora basato su Strumentazione Android ...". E poiché di quello che possiamo eseguire testUIAutomator
eEspresso
test utilizzandoInstrumentation 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.
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'`
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. –
Quale servizio di notifica si sta utilizzando? –
Sto utilizzando un servizio in background che invia una notifica ogni pochi giorni. – user12345
Voglio dire, stai usando una notifica semplice o una notifica push? –