Android 기기 테스트에서 새로 생겼으며 기존 프로젝트에 유닛 테스트를 추가하고 싶습니다. MVP 디자인 아키텍처를 사용하고 있습니다. 내 발표자 내에서 기본값을 얻으려면 PreferenceManager
을 호출하지만 항상 null을 반환합니다. 난 모방하는 방법에 대한 stackoverflow에 걸쳐 자습서 및 조언을 따랐습니다 PreferenceManager
과 SharedPreferences
하지만 작동하지 않을 수 있습니다. 이것은 나의 발표자 클래스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을 반환하는 방법은?
당신의 솔루션은 기능적이지만 슬픈 사실은 커다란 프로젝트이기 때문에 나는 현재의 코드를 바꿀 수 없다는 것이다. 결정. 고맙습니다. 그래도. –