Ich entwickle automatisierte Tests für eine Android-Anwendung (mit Robotium). Um die Konsistenz und Zuverlässigkeit der Tests zu gewährleisten, möchte ich jeden Test mit einem sauberen Zustand (der zu testenden Anwendung) beginnen. Dazu muss ich die App-Daten löschen. Dies kann manuell unter Einstellungen / Anwendungen / Anwendungen verwalten / [Meine App] / Daten löschen erfolgen
Was ist der empfohlene Weg, um dies programmgesteuert durchzuführen?
Antworten:
Sie können das Paket-Manager-Tool verwenden, um Daten für installierte Apps zu löschen (ähnlich wie durch Drücken der Schaltfläche "Daten löschen" in den App-Einstellungen auf Ihrem Gerät). Mit adb können Sie also Folgendes tun:
quelle
Error: unknown command 'clear'
.Nach der Antwort von @ edovino können Sie alle Einstellungen einer Anwendung programmgesteuert löschen
Warnung : Die Anwendung wird zwangsweise geschlossen.
quelle
Damit können Sie SharedPreferences-App-Daten löschen
und zum Löschen der App- Datenbank ist diese Antwort korrekt -> Löschen der Anwendungsdatenbank
quelle
Ab API-Version 19 kann ActivityManager.clearApplicationUserData () aufgerufen werden.
quelle
Überprüfen Sie diesen Code auf:
quelle
Wenn Sie nur ein paar gemeinsame Einstellungen löschen müssen, ist diese Lösung viel besser .
quelle
Mithilfe des Kontexts können wir app-spezifische Dateien wie Einstellungen und Datenbankdateien löschen. Ich habe den folgenden Code für UI-Tests mit Espresso verwendet.
quelle
Der einfachste Weg, dies zu tun, ist
Dadurch werden die Daten gelöscht und Ihre App aus dem Speicher entfernt. Dies entspricht der Option zum Löschen von Daten unter Einstellungen -> Anwendungsmanager -> Ihre App -> Daten löschen.
Dadurch werden die Daten vollständig entfernt und das Schließen der App erzwungen
quelle
Diese Lösung hat mir wirklich geholfen:
Mit den folgenden zwei Methoden können wir Daten programmgesteuert löschen
quelle
Wenn die Android-Version über Kitkat liegt, können Sie diese auch verwenden
public void onClick (Ansicht anzeigen) {
quelle
Die einzig mögliche Option besteht darin, den ADB-Befehl
adb shell pm clear package
vor dem Test auszuführen . Das größte Problem ist, dass es Kopfschmerzen gibt, die Testausführung und Shell-Befehle kombinieren.Wir (bei Mediafe) haben jedoch eine Lösung entwickelt, die auf normalen Geräten ohne Rootberechtigung für Sie funktioniert. Sie müssen lediglich eine Anmerkung hinzufügen. Der Rest wird durch Ausführen eines einfachen Bash-Skripts erledigt .
Fügen Sie einfach
@ClearData
Anmerkung vor jedem Ihrer Tests und tada 🎉, ADB klarer Befehl wird vor der Testdurchführung ausgeführt werden.Dies ist ein Beispiel für einen solchen Test:
Die Idee ist wie folgt
adb shell am instrument -e log true
Mit der gleichen Idee sind dies alles Optionen, die Sie leicht unterstützen können:
Verwenden Sie nur Anmerkungen. So was:
Bonus! 🎁 Für jeden fehlgeschlagenen Test:
Im Allgemeinen ist es einfach, weitere Optionen hinzuzufügen, da die Tests einzeln über das Bash-Skript und nicht über die Gradle-Aufgabe ausgeführt werden.
📗 Der vollständige Blog-Beitrag : https://medium.com/medisafe-tech-blog/running-android-ui-tests-53e85e5c8da8
📘 Der Quellcode mit Beispielen : https://github.com/medisafe/run-android-tests
Hoffe das beantwortet 6 Jahre Frage;)
quelle