Ответ
Unit-тесты проверяют отдельные компоненты (классы, методы) в изоляции. Пример:
@Test
fun addition_isCorrect() {
assertEquals(4, 2 + 2)
}
Интеграционные тесты проверяют взаимодействие между модулями (например, работа с БД или API).
UI-тесты (Espresso/UI Automator) проверяют пользовательский интерфейс и навигацию. Пример:
onView(withId(R.id.button)).perform(click())
onView(withId(R.id.text)).check(matches(isDisplayed()))
Snapshot-тесты (Facebook Screenshot Tests) фиксируют состояние UI и сравнивают с эталоном.
Каждый тип тестов решает свои задачи: unit — логику, интеграционные — взаимодействие, UI — поведение приложения с точки зрения пользователя.