私はAndroidのユニットテストで新しく、私はいくつかのユニットテストを既存のプロジェクトに追加したいと思います。私はMVP設計アーキテクチャを使用しています。私の発表者の中では、デフォルトのSharedPrefences
を得るためにPreferenceManager
を呼び出していますが、常にnullを返します。私はPreferenceManager
とSharedPreferences
を模擬する方法についていくつかのチュートリアルとアドバイスをstackoverflowに従ってきましたが、動作させることはできません。これは私のプレゼンタークラスMockitoのMock PreferenceManager
@RunWith(MockitoJUnitRunner.class)
public class SettingsPresenterTest {
@Mock
private SettingsView mView;
@Mock
private LocalConfiguration conf;
private SettingsPresenter mPresenter;
public SettingsPresenterTest() {
super();
}
@Before
public void startUp() throws Exception {
MockitoAnnotations.initMocks(LocalConfiguration.class);
MockitoAnnotations.initMocks(PreferenceManager.class);
mPresenter = new SettingsPresenter(mView);
final SharedPreferences sharedPrefs =
Mockito.mock(SharedPreferences.class);
final Context context = Mockito.mock(Context.class);
Mockito.when(PreferenceManager.getDefaultSharedPreferences(context)).
thenReturn(sharedPrefs);
}
@Test
public void notificationsEnabledClicked() throws Exception {
boolean notifsEnabled = false;
mPresenter.notificationsEnabledClicked(notifsEnabled);
Mockito.verify(mView).setNotificationsView(notifsEnabled);
}
}
であり、ここでSharedPreferences
が
public class LocalConfiguration {
public TerritoryDto getLastSavedTerritory() {
SharedPreferences preferences =
PreferenceManager.getDefaultSharedPreferences(H.getContext());
String terrritoryString = preferences.getString(SAVED_TERRITORY,
null);
return
SerializerHelper.getInstance().deserialize(terrritoryString,
TerritoryDto.class);
}
}
はあなたが私にこのエラーを解決する方法についていくつかのガイドラインを与えることができるnullを返される方法はありますか?
あなたのソリューションは機能的ですが、悲しい事実は、大きなプロジェクトで、私はここ1ヶ月間ここにいたので、私はそのようなコードを取ることができないので、少なくとも現時点ではコードを変更できないということです決定。ありがとうございました。しかし、。 –