Я хочу протестировать метод моего класса с помощью Mockito.Метод mocked не возвращает ожидаемое значение
public class SplashPresenter {
public volatile State mField1 = State.DEFAULT;
public volatile State mField2 = State.DEFAULT;
boolean stateFlagsAreAllCompleted(@NonNull final ISplashView view) {
if (mField1 == State.COMPLETE //
&& mField2 == State.COMPLETE) {
// Check Forced Update
final int updateCheckResult = checkForcedUpdate(); // <===
if (updateCheckResult == MyConstants.PRODUCTION_UPDATE_AVAILABLE) {
view.displayForcedUpdateAlert(false);
return true;
}
if (updateCheckResult == MyConstants.BETA_UPDATE_AVAILABLE) {
view.displayForcedUpdateAlert(true);
return true;
}
view.restartLoader();
// Move to the home screen
return true;
}
return false;
}
int checkForcedUpdate() {
...... // my codes
}
}
и Это мой тестовый класс:
public class SplashPresenterTest_ForStateFlags {
private Context mContext;
private ISplashView mView;
@Before
public void setUp() throws Exception {
mContext = Mockito.mock(Context.class);
mView = Mockito.mock(ISplashView.class);
}
@Test
public void stateFlagsAreAllCompleted() throws Exception {
SplashPresenter presenter = Mockito.mock(SplashPresenter.class);
presenter.mField1 = State.COMPLETE;
presenter.mField2 = State.COMPLETE;
when(presenter.checkForcedUpdate()).thenReturn(1);
boolean actual = presenter.stateFlagsAreAllCompleted(mView);
System.out.println("actual: " + actual + ", " +
presenter.mField1 + ", " +
presenter.checkForcedUpdate());
assertTrue(actual);
}
}
провал испытаний, что происходит в конце :(Это выход:
фактическая ложь, ПОЛНОЕ, 1
вещь, которую я не понимаю, даже я меняю метод stateFlagsAreAllCompleted
на foll после чего все еще тест заканчивается с выводом выше.
boolean stateFlagsAreAllCompleted(@NonNull final ISplashView view) {
return true;
}
Итак, любая рекомендация будет оценена по достоинству. Благодарю.
На самом деле я хочу протестировать вывод 'stateFlagsAreAllComplete()' на основе различных условий (разработанных внутри метода). Итак, таким образом, я не могу оценить результат. – Hesam
Теперь я вижу проблему - вы издеваетесь над классом, чей метод вы тестируете. Вы не должны издеваться над тестируемым классом (поражает цель тестирования). Вы должны только издеваться над зависимостями. Создайте экземпляр класса, а затем проверьте его. Я обновляю свой ответ – ucsunil
ах, я этого не знал. Спасибо за Ваш ответ. – Hesam