Как улучшить тестирование приложения

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

Ответ

Используйте модульное тестирование (Unit Testing) для проверки отдельных компонентов (например, ViewModel, UseCase) с помощью JUnit и Mockito.

Пример:

@Test
fun `validate login success`() {
    val authRepo = mock(AuthRepository::class.java)
    `when`(authRepo.login("user", "pass")).thenReturn(true)
    val viewModel = LoginViewModel(authRepo)
    viewModel.login("user", "pass")
    assert(viewModel.state.value is LoginState.Success)
}

UI-тестирование с Espresso:

@Test
fun loginButton_click_showsSuccess() {
    onView(withId(R.id.loginBtn)).perform(click())
    onView(withText("Welcome!")).check(matches(isDisplayed()))
}

Дополнительно:

  • Используйте тестовое покрытие (JaCoCo)
  • Внедряйте CI/CD (GitHub Actions, Bitrise)
  • Мокируйте зависимости (MockWebServer для API)
  • Тестируйте edge-кейсы (оффлайн, ошибки сервера)