Kann ich testen, status bar Benachrichtigungen mit Android testing-framework?
Habe ich eine Klasse sendet eine status bar notification in Android. Ich kann nicht einen Weg finden, um zu testen, ob die Meldung gesendet wurde oder nicht, das macht es sehr schwer zu schreiben, jede Art von nützlichen unit-test.
Hat jemand eine Lösung dafür?
- Es ist ein test-framework gibt, namens robotium, aber ich weiß nicht, ob es unterstützt Benachrichtigungen. Aber im Fall der standard-junit-lib nicht unterstützt wird, können Sie überprüfen Sie es vielleicht. code.google.com/p/robotium
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vielleicht nicht die Antwort, die du suchst, aber-wie üblich-die Lösung ist:
Dieser kann vereinfacht mit der folgenden Technik:
Versuchen, erstellen Sie ein Mock-Objekt durch die Erweiterung NotificationManager und überschreiben Sie die
notify()
Methoden. Die überschriebenen Funktionen können geltend gemacht werden. In den test-Fall(s), injizieren Sie die Mock zum Thema Aktivität und führen Sie die tests mit Android JUnit Test.Robotium nicht interagieren mit der notification bar. Sie sind auf eine Anwendung beschränkt zu. Check FAQ für robotium, es ist die Rede von diesem:
http://code.google.com/p/robotium/wiki/QuestionsAndAnswers
UI Tests
Dies ist, was Sie wollen, denke ich. Die uiautomator.
Funktioniert nur auf Android 4.1 oder höher. Sie müssen führen Sie den Beispielcode ersten vielleicht.
Können Sie schreiben, ein Stück code, um die pull-down-status-bar-Aktion und dann tun Sie Dinge. Dies ist nur UI-Tests. Sie können nicht testen Sie Ihre Daten mit uiautomator.
Hoffe, dass dies helfen würde.
Gelöst eine ähnliche Art von situation, die durch die Speicherung der Meldung detail-Daten zu speichern, bevor Sie Sie versenden und Kennzeichnung als anerkannt, wenn Benutzer die Anwendung durch die notification bar.
Wie robotium ist beschränkt auf Anwendungs-Grenzen kann nicht zugegriffen werden system-Daten daher getestet, das Verhalten mithilfe von junit/jmockit basierte unit test.
Können Sie verwenden einen emulator, nur für diese Art von tests, mit Android Marshmallow (api 23).
Beispiel:
Ist der wichtige Teil ist der Aufruf an den NotificationManager (mManager), um zu überprüfen, dass es aktive Benachrichtigungen nach dem senden einer multicast-Nachricht an Google FCM http-Endpunkt.
Check-out NotificationListenerService:
"Ein Dienst, der Anrufe aus dem system, wenn neue Meldungen veröffentlicht werden oder entfernt werden, oder Ihre Rangordnung geändert."
https://developer.android.com/reference/android/service/notification/NotificationListenerService.html
Nur, um andere zu retten einige Zeit: ein Ding, das aussieht wie es sollte erkennen, Benachrichtigungen, aber nicht versucht, erstellen Sie ein PendingIntent mit der NO_CREATE Flagge.
Da versucht ein PendingIntent mit den gleichen Werten wie eine bereits bestehende Meldung, aber mit der NO_CREATE flag, null zurückgeben sollte, schien es, als würde sich zeigen, ob eine Meldung bereits hatte oder nicht.
Leider, aber dies scheint nicht zuverlässig zu sein.