Ответ
Используйте модульное тестирование (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-кейсы (оффлайн, ошибки сервера)