java - 为 Robolectric 的 SharedPreferences 提供测试数据

标签 java android android-testing robolectric

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

我有两个测试用例

  1. Activity 需要一个新的/空的 sharedPreferences

  2. Activity 期望 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();

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

关于java - 为 Robolectric 的 SharedPreferences 提供测试数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9748417/

相关文章:

java - Jersey:接受 Enum 请求参数的整数

java - getmeasuredheight 在使用 ReplacementSpan 时返回 0 或相同

android - 当 Android 中 Firebase 数据库中的数据发生更改时,将数据发送到应用程序

android - Espresso 如何像在 robotium 中那样不使用 R.id.viewid 访问 View ?

android - 如何测试 Galaxy S8 的 android.max_aspect

java - 添加Java系统模块在Eclipse中编译

java - 使用 JPA, Jersey 从数据库中检索 Blob(pdf)

android - 移动应用性能测试工具

java - 无法将构建器模式的方法调用与已编译的内部类链接起来

java - Android ImageButton 因其背景图像而变得太大