50

Robolectric を使い始めたばかりですが、私が必要としているものはほとんどないようです。ただし、SharedPreferences の使用に関しては、ちょっとした障害にぶつかりました。

私は2つのテストケースを持っています

  1. アクティビティには新しい/空の sharedPreferences が必要です

  2. アクティビティは、すでに一部のデータが含まれている sharedPreferences を想定しています

テスト ケース 1 の場合、テストは期待どおりに合格しているため、すべて問題ありません:)

ただし、テスト ケース 2 では、Robolectric に偽のデータを提供する適切な方法を見つけられないように思われるため、アクティビティはこの偽のデータにアクセスできます。

非常に一般的なユースケースのように感じますが、どうすればいいのかわかりません!

4

4 に答える 4

60

方法を見つけました - 今ではとても明白に思えます!

興味のある方は、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();

これが誰かを助けたことを願っています:)

于 2012-03-18T01:32:03.137 に答える
8

私のために働くRobolectric 3.1 SNAPSHOTソリューション...そしてあなたのために働くかもしれません

    Context context = RuntimeEnvironment.application.getApplicationContext();
    SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
    sharedPreferences.edit().putBoolean("useOnlyOnWifi", false).commit();

このコード スニペットは、wifi でのテストのみに使用します

于 2016-06-07T01:58:30.740 に答える