Was ist der empfohlene Weg, um dies programmgesteuert durchzuführen?
Die einzig mögliche Option besteht darin, den ADB-Befehl adb shell pm clear packagevor 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 @ClearDataAnmerkung 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:
@Test
@ClearData
public void someTest() {
// your test
}
Die Idee ist wie folgt
- Lesen Sie alle Tests mit
adb shell am instrument -e log true
- Erstellen Sie einen Ausführungsplan, indem Sie die Ausgabe von (1) analysieren.
- Führen Sie den Ausführungsplan zeilenweise aus
Mit der gleichen Idee sind dies alles Optionen, die Sie leicht unterstützen können:
- Daten löschen
- Benachrichtigungsleiste löschen
- Parametrieren
- Nach Tags filtern und ausführen
Verwenden Sie nur Anmerkungen. So was:
@Test
@ClearData
@Tags(tags = {"sanity", "medium"})
@Parameterized.Repeat(count = 3)
public void myTest() throws Exception {
String param = params[index];
// ...
}
Bonus! 🎁 Für jeden fehlgeschlagenen Test:
- Sammle Logcat + Stacktrace
- Video aufnehmen (mp4)
- Dump DB (SQLite)
- Gemeinsame Standardeinstellungen sichern (xml)
- Sammle Dumpsys-Dateien wie: Batterie, Netstats und andere.
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;)