Der aktuelle Espresso bietet keinen Mechanismus zum Zurücksetzen des Anwendungsstatus. Aber für jeden Aspekt (Pref, DB, Dateien, Berechtigungen) existiert eine Lösung.
Zunächst müssen Sie vermeiden, dass Espresso Ihre Aktivität automatisch startet, damit Sie genügend Zeit haben, um zurückzusetzen.
@Rule
public ActivityTestRule<Activity> activityTestRule = new ActivityTestRule<>(Activity.class, false, false);
Und später Ihre Aktivität mit
activityTestRule.launchActivity(null)
beginnen Voreinstellungen für Reseting Sie Schnipsel folgenden (vor dem Start Ihrer Tätigkeit)
File root = InstrumentationRegistry.getTargetContext().getFilesDir().getParentFile();
String[] sharedPreferencesFileNames = new File(root, "shared_prefs").list();
for (String fileName : sharedPreferencesFileNames) {
InstrumentationRegistry.getTargetContext().getSharedPreferences(fileName.replace(".xml", ""), Context.MODE_PRIVATE).edit().clear().commit();
}
Sie können auch Einstellungen zurücksetzen können Ihre Aktivität nach dem Start . Aber dann hat die Aktivität vielleicht schon die Präferenzen gelesen.
Ihre Anwendungsklasse wird nur einmal gestartet und ist bereits gestartet, bevor Sie die Einstellungen zurücksetzen können.
Ich habe angefangen, eine Bibliothek zu schreiben, die Tests mit Espresso und uiautomator einfacher machen sollte. Dies beinhaltet Tools zum Zurücksetzen von Anwendungsdaten. https://github.com/nenick/espresso-macchiato Siehe zum Beispiel EspAppDataTool mit den Methoden zum Löschen von Einstellungen, Datenbanken, zwischengespeicherten Dateien und gespeicherten Dateien.
Das Projekt nutzt viele verschiedene SharedPreferences Dateien. Wie ich schon sagte, eine native Methode zum Löschen aller verschiedenen SharedPreferences-Dateien wäre eine ziemlich spröde Lösung. :( – Turnsole
Es ist gleich, wenn Sie eine oder 9999 tausend SharedPreferences haben. Normalerweise befinden sie sich alle in shared_prefs. Was sonst erwarten Sie? Als Alternative können Sie ein Skript schreiben, um jeden Test einzeln auszuführen, zwischen jedem Test löschen Sie die Anwendungsdaten mit adb und starte dann den nächsten Test – nenick
Oh, ich sehe was du da gemacht hast Ich habe es zu schnell gelesen und dachte "shared_prefs" war eine Abkürzung für your_pref_file_name_here, aber das ist buchstäblich der Stammordner der SharedPreferences Dateien. – Turnsole