Как тестировать метод, когда у него есть обработчик в Android - PullRequest
0 голосов
/ 06 февраля 2019

У меня есть такой метод

  public void updateListViewVisibility(List<User> userList) {
      userViewVisibility.set(View.GONE);
      handler.postDelayed(runnableCode, 10000000);
   }


/**
 * A runnable code, the purpose of this is to display a message if no user found in range.
 */
private Runnable runnableCode = new Runnable() {
    @Override
    public void run() {
        changeState();
    }
};

Я могу запустить модульное тестирование этого, если в методе нет обработчика updateListViewVisibility

@Test
public void test_updateupdateListViewVisibility() {
    List<User> userList = new ArrayList<User>();
    userList.clear();
    SUT.updateListViewVisibility(userList);
    assertEquals("Variable userViewVisibility should be false",
            SUT.userViewVisibility.get(), false);
}

Но, еслиЯ держу обработчик

Я получил следующую ошибку.

java.lang.RuntimeException: Method postDelayed in android.os.Handler not mocked. See http://g.co/androidstudio/not-mocked for details.

Как правильно протестировать этот метод?

1 Ответ

0 голосов
/ 06 февраля 2019

Все просто, запустите свой тестовый класс MockitoJunitRunner

например: @RunWith(MockitoJUnitRunner.class) public class WhateverClassTest { }

и смейтесь над обработчиком

@Mock
Handler handler

// добавьте эти зависимости в gradle:

    testImplementation 'org.mockito:mockito-core:2.2.0'
    testImplementation 'junit:junit:4.12'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...