2010-12-21 54 views
4

我知道如何清除SharedPreferences在这样一个定义的状态下运行我的单元测试:PreferenceManager.getDefaultSharedPreferences(getActivity()).edit().clear().commit()Android:如何保存,清除然后还原SharedPreferences以进行单元测试?

不过,我希望能够保存和恢复我的喜好,我自己的应用程序后,用户的设置我运行我的单元测试。

有没有一种简单的方法来做到这一点,而无需手动保存和恢复每个偏好项目单独?

感谢, 杰夫

回答

2

这听起来像你需要做的是提供围绕SharedPreferences的包装暴露自己的共享偏好界面。例如。

public interface PreferencesProvider { 
    String getStringValue(String key); 
} 

无论下测试类(例如活动),可以用一个具体的实施PreferencesProvider,它调用PreferenceManager.getDefaultSharedPreferences ...等。在你的测试类中,你可以用一个假的具体实现来替换你喜欢的测试。

通过这种方式,您的首选项提供程序与应用程序类分离,测试变得简单。事实上,您的测试永远不需要触摸存储在手机上的实际首选项。

然而,这需要一些像RoboGuice这样的依赖注入机制。

+0

这是一个好主意,谢谢!我实际上计划在一般情况下使用标准的Guice来创建更好的架构,所以希望不会太困难。 – 2011-04-24 14:47:09

相关问题