Robolectricを使い始めたばかりで、私が必要としているものはほとんどないようです。ただし、SharedPreferencesの使用に関しては、少し障害があります。
2つのテストケースがあります
アクティビティは新しい/空のsharedPreferencesを期待しています
アクティビティは、すでにいくつかのデータが含まれているsharedPreferencesを期待しています
テストケース1の場合、テストは期待どおりにパスしているため、すべて良好です。
ただし、テストケース2の場合、Robolectricに偽のデータを提供するための適切な方法を理解できていないため、アクティビティはこの偽のデータにアクセスできます。
それは非常に一般的な使用例のように感じますが、それを行う方法を理解することができないようです!
方法がわかりました-今ではとても明白に思われます!
興味のある人は、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();
これが誰かを助けたことを願っています:)
私が賛成票を投じた受け入れられた答えはもちろん正しいです。 Robolectric 3を使用している場合、状況が少し変更されました
SharedPreferences sharedPreferences =
RuntimeEnvironment.application.getSharedPreferences(
"you_custom_pref_name", Context.MODE_PRIVATE);
その後、通常どおりに設定を追加できます
sharedPreferences.edit().putBoolean(
activity.getString(R.string.pref_somepref), true).commit();
私に有効なRobolectric 3.1 SNAPSHOTソリューション...
Context context = RuntimeEnvironment.application.getApplicationContext();
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
sharedPreferences.edit().putBoolean("useOnlyOnWifi", false).commit();
このコードスニペットはWi-Fiでのテストのみに使用します
_robolectric:4.0.2
_使用val context = ApplicationProvider.getApplicationContext<YourApplication>() PreferenceManager.getDefaultSharedPreferences(context)