我知道如何清除 SharedPreferences 以在定义的状态下运行我的单元测试,如下所示:PreferenceManager.getDefaultSharedPreferences(getActivity()).edit().clear().commit()
但是,在运行单元测试后,我希望能够保存和恢复我喜欢的设置作为我自己的应用程序的用户。
有没有一种简单的方法可以做到这一点,而无需单独手动保存和恢复每个首选项?
谢谢,杰夫
我知道如何清除 SharedPreferences 以在定义的状态下运行我的单元测试,如下所示:PreferenceManager.getDefaultSharedPreferences(getActivity()).edit().clear().commit()
但是,在运行单元测试后,我希望能够保存和恢复我喜欢的设置作为我自己的应用程序的用户。
有没有一种简单的方法可以做到这一点,而无需单独手动保存和恢复每个首选项?
谢谢,杰夫
听起来您需要做的是围绕 SharedPreferences 提供一个包装器,它公开您自己的共享首选项接口。例如
public interface PreferencesProvider {
String getStringValue(String key);
}
无论您的测试类是什么(例如一个活动),都可以使用 PreferencesProvider 的具体实现,它调用 PreferenceManager.getDefaultSharedPreferences...等。在您的测试类中,您可以替换一个假的具体实现来返回您喜欢的任何内容进行测试。
通过这种方式,您的首选项提供程序与您的应用程序类分离,并且测试变得简单。事实上,您的测试永远不需要接触手机上存储的实际首选项。
然而,将其付诸实施需要某种依赖注入机制,如 RoboGuice。