首页 > 解决方案 > Android 测试共享偏好

问题描述

我想测试一个值是否正确保存到SharedPreferences.

在我的代码中,我进行了SharedPreferences注入,因此我保存了一个值,如下所示:

with(sharedPreferences.edit()) {
    putString("testkey", "dummyValue")
    apply()
}

在我的测试中:

val mockSharedPreferences = mock(SharedPreferences::class.java)
val mockEditor = mock(SharedPreferences.Editor::class.java)

`when`(sharedPreferences.edit()).thenReturn(mockEditor)

assert(mockSharedPreferences.getString("testkey") == "dummyValue")

问题是 mockSharedPreferences 返回 null 那么我还需要模拟/更改什么?

标签: androidunit-testing

解决方案


如果返回 true,您可以使用此代码,您的值已保存。

public boolean saveUserId(String saveUserId) {
    SharedPreferences 
   sharedPreferences=context.getSharedPreferences(USER_DETAILS, 
   MODE_PRIVATE);
    SharedPreferences.Editor editor=sharedPreferences.edit();
    editor.putString(USER_ID, saveUserId);
    editor.apply();
    return true;
}

如果您想获取保存的值,下面的代码会很有帮助。

 public String getUserId(){
    SharedPreferences sharedPreferences=context.getSharedPreferences(USER_DETAILS, MODE_PRIVATE);
    return sharedPreferences.getString(USER_ID,null);
}

推荐阅读