为机器人的共享首选项提供测试数据

2022-08-31 20:56:04

刚刚开始使用Robolactric,它似乎几乎是我需要的。但是,我在使用共享首选项方面遇到了一些障碍。

我有两个测试用例

  1. 活动需要新的/空的共享首选项

  2. 活动需要共享首选项,其中已有一些数据

对于测试用例 1,测试按预期通过,因此所有良好的:)

但是,对于测试用例2,我似乎无法找到一种向Robolectric提供一些假数据的好方法,因此活动能够访问这些假数据。

这感觉像是一个非常常见的用例,但我似乎不知道如何做到这一点!


答案 1

找出方法 - 现在看来很明显!

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

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

如果您有自定义的共享首选项,您应该能够执行此操作(尚未真正正确测试,但也应该可以正常工作)

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

希望这帮助了某人:)


答案 2

我投票的接受答案当然是正确的。如果您使用的是Robolctric 3,则情况略有变化

 SharedPreferences sharedPreferences =
     RuntimeEnvironment.application.getSharedPreferences(
         "you_custom_pref_name", Context.MODE_PRIVATE);

然后,您可以像往常一样添加首选项

 sharedPreferences.edit().putBoolean(
    activity.getString(R.string.pref_somepref), true).commit();

推荐