Можно ли завершить модульное тестирование при вызове метода? - PullRequest
0 голосов
/ 29 мая 2018

Вот мой метод тестирования, где он должен быть успешным, если showLoading () и loadDataSuccess (response) было вызвано:

 @RunWith(PowerMockRunner.class)
     public class PresenterTest {
            @Mock  
            private ProfileContract.View view;
            @Mock
            private ProfileContract.Handler handler;

            @Test
            public void onLoadDataClicked() {
              presenter.loadData();
              verify(mView, times(1)).showLoading();
              verify(mHandler, times(1)).loadDataSuccess();
            }
     }

UPDATE1 Вот мой ведущий:

class ProfilePresenter(private val mView: ProfileContract.View) : ProfileContract.Handler {

     override fun loadData() {
            mView.showLoading()
            mUserService.user()
                    .compose(RxUtil.mapper())
                    .subscribe({ response ->
                        loadDataSuccess()
                    }, { error ->
                        //stuff
                    })
        }
}

Спасибо!

Ответы [ 2 ]

0 голосов
/ 29 мая 2018

Я думаю, что есть основная проблема с вашей настройкой теста:

Вы не используете verify, чтобы проверить, вызывает ли одна функция другую функцию в том же классе.Verify используется для проверки того, что проверенный класс вызывает функцию для других ( mocked ) классов.Если я не ошибаюсь, ваша установка должна выдать сообщение об ошибке, в котором говорится, что вы не можете использовать verify в экземплярах классов.

Что делать, если вы хотите проверить, выдаёт ли onCompleteClicked()правильный результат - проверить, правильно ли установлены данные, которые изменяются внутри функции onStuffComplete().Для этого вы можете использовать assert.

В качестве примера, скажем, onStuffCompleted() устанавливает completeCounter в 1

@Test
public void onCompleteClicked() {
  presenter.onStuffCompleteClicked();
  assertEquals(completCounter , 1);
}

И чтобы ответить на ваш первоначальный вопрос: verifyassert) пройдут, если будут выполнены требования (и при этом пройдёт весь тест), и провалится, если нет.Вам не нужно добавлять какие-либо дополнительные элементы (но еще раз: verify будет работать только с насмешливыми классами).

0 голосов
/ 29 мая 2018

Если вы используете return statment, ваш тест завершится успешно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...