为Robolectric的SharedPreferences提供测试数据


问题内容

刚开始使用Robolectric,这似乎是我所需要的。但是,在使用SharedPreferences方面,我遇到了一些障碍。

我有两个测试案例

  1. 活动需要新的/空的sharedPreferences

  2. 活动期望其中已包含一些数据的sharedPreferences

对于测试用例1,测试按预期通过,所以一切都很好:)

但是,对于测试用例2,我似乎无法找出一种向Robolectric提供一些虚假数据的好方法,因此Activity可以访问该虚假数据。

感觉像是一个非常普通的用例,但是我似乎无法弄清楚该怎么做!


问题答案:

了解如何-现在看起来如此明显!

对于那些感兴趣的人,您只需获取sharedPreferences,然后用所需的数据填充它。

SharedPreferences sharedPreferences = ShadowPreferenceManager.getDefaultSharedPreferences(Robolectric.application.getApplicationContext());
sharedPreferences.edit().putString("testId", "12345").commit();

如果您有一个自定义的SharedPreferences,则应该能够执行此操作(尚未经过正确的测试,但也可以正常工作)

SharedPreferences sharedPreferences = Robolectric.application.getSharedPreferences("you_custom_pref_name", Context.MODE_PRIVATE);
sharedPreferences.edit().putString("testId", "12345").commit();

希望这对某人有所帮助:)