当前的 espresso 不提供任何重置应用程序状态的机制。但是对于每个方面(pref、db、files、permissions)都有一个解决方案。
最初,您必须避免 espresso 自动启动您的活动,以便您有足够的时间进行重置。
@Rule
public ActivityTestRule<Activity> activityTestRule = new ActivityTestRule<>(Activity.class, false, false);
然后用
开始你的活动
activityTestRule.launchActivity(null)
要重置首选项,您可以使用以下 sn-p(在开始活动之前)
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();
}
您也可以在开始活动后重置偏好设置。但随后活动可能已经阅读了偏好。
您的应用程序类只启动一次,并且在您可以重置首选项之前已经启动。
我已经开始编写一个库,它应该可以让 espresso 和 uiautomator 的测试更加简单。这包括用于重置应用程序数据的工具。 https://github.com/nenick/espresso-macchiato 参见例如 EspAppDataTool 以及清除首选项、数据库、缓存文件和存储文件的方法。