我有一个帮助程序类将用户对象保存到共享首选项。我在我的数据模型中使用了一个serialize(): String函数和一个create(serializedString: String)函数User。它们使用 GSon 串行器,并且按照单元测试的建议运行良好。
现在我的助手类被调用SharedPreferenceUserStore.kt,它接受一个Context对象。代码是:
class SharedPreferenceUserStore(context: Context) {
companion object {
val TAG = SharedPreferenceUserStore::class.java.simpleName
}
var userLocalSharedPref: SharedPreferences =
context.getSharedPreferences(USER_LOCAL_STORE_SHARED_PREF_NAME, Context.MODE_PRIVATE)
/*
Store the required data to shared preference
*/
@SuppressLint("ApplySharedPref")
fun storeUserData(user: User) {
val userLocalDatabaseEditor = userLocalSharedPref.edit()
val serializedData = user.serialize()
userLocalDatabaseEditor.putString(
USER_LOCAL_STORE_SHARED_PREF_SERIALIZED_DATA_KEY,
serializedData
)
if (userLocalDatabaseEditor.commit()) {
Log.d(TAG, " Store Commit return true")
}
}
/*
Clear all the locally stored data from the …Run Code Online (Sandbox Code Playgroud) 我试图通过使用Mockito Library模拟Android共享偏好来编写单元测试,但是即使经过多次尝试它也不适用于我.请检查下面的示例代码,让我知道它出了什么问题
我目前正在使用"JCAndKSolutions/android-unit-test"android junit插件.
我的代码如下:
PreferenceHelper.java public class PreferencesHelper {private SharedPreferences mSharedPreferences;
public class PreferencesHelper
{
private SharedPreferences mSharedPreferences;
static String PREFERENCE_USER;
public PreferencesHelper(SharedPreferences mSharedPreferences)
{
this.mSharedPreferences = mSharedPreferences;
}
public void setUserName(String userName)
{
mSharedPreferences.edit().putString(PREFERENCE_USER, "Vkc").apply();
}
public String getUserName()
{
return mSharedPreferences.getString(PREFERENCE_USER, null);
}
}
Run Code Online (Sandbox Code Playgroud)
PreferenceHelperTest.java
public class PreferencesHelperTest extends TestCase
{
@Mock
SharedPreferences mSharedPreference;
@Mock
SharedPreferences.Editor mEditor;
@Mock
Context context;
@Mock
PreferenceManager mPreferenceManager;
PreferencesHelper mPrefHelper;
public void setUp() throws Exception
{
initMocks(this);
}
public void testSetUserName(){
final …Run Code Online (Sandbox Code Playgroud)