Современный эспрессо не предоставляет никакого механизма для сброса состояния приложения. Но для каждого аспекта (pref, db, files, permissions) существует решение.
Первоначально вы должны избегать того, чтобы эспрессо автоматически запускал вашу деятельность, чтобы у вас было достаточно времени для сброса.
@Rule
public ActivityTestRule<Activity> activityTestRule = new ActivityTestRule<>(Activity.class, false, false);
А потом начать свою деятельность с
activityTestRule.launchActivity(null)
Для переустановки предпочтений вы можете использовать следующий фрагмент код (перед началом деятельности)
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();
}
Вы можете сбросить предпочтения после начала вашей деятельности слишком , Но тогда активность, возможно, уже прочитала предпочтения.
Ваш класс приложений запускается только один раз и начинается, прежде чем вы сможете сбросить настройки.
Я начал писать библиотеку, которая должна упростить тестирование с помощью эспрессо и uiautomator. Это включает в себя инструменты для перепродажи данных приложения. https://github.com/nenick/espresso-macchiato См. Например, EspAppDataTool с методами очистки предпочтений, баз данных, кешированных файлов и сохраненных файлов.
Проект использует много различных SharedPreferences файлов. Как я уже сказал, наличие собственного метода для очистки всех файлов SharedPreferences будет довольно хрупким решением. :( – Turnsole
Его равный, если у вас есть один или 9999 tausend SharedPreferences. Обычно они все находятся в shared_prefs. Что еще вы ожидаете? В качестве альтернативы вы можете написать скрипт для запуска каждого теста исключительно между каждыми ясными данными теста с adb и затем начните следующий тест. – nenick
О, я вижу, что вы там делали. Я читал его слишком быстро, и фигура «shared_prefs» была сокращенной для your_pref_file_name_here, но это буквально корневая папка файлов SharedPreferences. – Turnsole