我知道如何清除SharedPreferences以在如下定义的状态下运行我的单元测试:PreferenceManager.getDefaultSharedPreferences(getActivity()).edit().clear().commit()
但是,在运行单元测试后,我希望能够保存和恢复我喜欢的设置作为我自己的应用程序的用户。
有没有一种简单的方法可以在不手动保存和恢复每个首选项的情况下执行此操作?
谢谢, 杰夫
答案 0 :(得分:2)
听起来你需要做的是提供一个SharedPreferences的包装器,它暴露你自己的共享首选项界面。 E.g。
public interface PreferencesProvider {
String getStringValue(String key);
}
无论您正在测试的课程(例如,活动)都可以使用PreferencesProvider的具体实现,该实现调用PreferenceManager.getDefaultSharedPreferences ...等。在您的测试类中,您可以替换假的具体实现来返回您测试的任何内容。
这样,您的首选项提供程序与您的应用程序类分离,测试变得简单。事实上,您的测试永远不需要触摸存储在手机上的实际首选项。
然而,将其付诸行动需要某种依赖注入机制,如RoboGuice。