Android JUnit TestでSharedPreferenceの値を取得する

ActivityでSharedPreferenceに値を設定しているような場合に、その値が正常に設定されているかテストする必要が出てきたので少し試してみました。当たり前のことかもしれませんが、最初は方法がわからなかったので…。

Activityでは下記のようにSharedPreferenceへ値をセットしているとします。

[sourcecode language="java"]

// NOTE:SharedPreferenceへ保存する SharedPreferences pref = getSharedPreferences(TAG, MODE_WORLD_READABLE); Editor editor = pref.edit(); editor.putString(SharedPrefKey, displayString.getValueString()); editor.commit();

[/sourcecode]

このメソッドをテストする場合、次のようにSharedPreferenceから値を取得することができました。

[sourcecode language="java"]

public void testGetSharedPrefValue() throws Exception{

Log.d(TAG, "=====================================================================");
Log.d(TAG, "start testGetSharedPrefValue");
Log.d(TAG, "=====================================================================");

// 整数の入力
inputAndAddNum();
assertEquals("46", tv.getText().toString());

// superにセットしたActivityからSharedPreferencesを参照する
SharedPreferences pref = super.getActivity().getSharedPreferences(TAG, super.getActivity().MODE_WORLD_READABLE);
String value = pref.getString(Calculator.SharedPrefKey,"0");
assertEquals("46.0", value);

Log.d(TAG, "=====================================================================");
Log.d(TAG, "end testGetSharedPrefValue");
Log.d(TAG, "=====================================================================");

}

[/sourcecode]

確認したところ、SharedPreferenceのモードに関係なく値が取得できました。すこしAndroid JUnit Testでどのようなことを行っていけばよいのかわかってきたように思います。