Какие знаешь способы тестирования Presenter в MVP

«Какие знаешь способы тестирования Presenter в MVP» — вопрос из категории Тестирование, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В MVP тестирование Presenter'а обычно проводится через unit-тесты с использованием моков/стабов для View и Model. Основные подходы:

  1. Mockito/JUnit – мокаем View, проверяем вызовы её методов:
@Test
fun `loadData calls showProgress and hideProgress`() {
    val mockView = mock(MyView::class.java)
    val presenter = MyPresenter(mockView)

    presenter.loadData()

    verify(mockView).showProgress()
    verify(mockView).hideProgress()
}
  1. Тестирование реакций на колбэки – эмулируем ответы Model:
@Test
fun `onDataLoaded updates view`() {
    val mockView = mock(MyView::class.java)
    val presenter = MyPresenter(mockView)

    presenter.onDataLoaded(testData)

    verify(mockView).showData(testData)
}
  1. Robolectric – если нужен контекст Android

  2. Тестирование потоков – с помощью RxJava TestScheduler или Coroutines TestDispatcher

Ключевое – изолировать Presenter от реальных View/Model, проверять только его логику и взаимодействие с зависимостями.