Ответ
Да, покрывал тестами функционал приложения. Использовал JUnit для модульных тестов и Espresso для UI-тестов.
Пример модульного теста:
@Test
fun `addition should return correct sum`() {
val calculator = Calculator()
assertEquals(4, calculator.add(2, 2))
}
Пример UI-теста:
@Test
fun loginButton_opensMainScreen() {
onView(withId(R.id.loginButton)).perform(click())
onView(withId(R.id.mainScreen)).check(matches(isDisplayed()))
}
Также применял Mockito для мокирования зависимостей. Тесты помогают быстро находить регрессии и повышают надежность кода.
Ответ 18+ 🔞
А, ну это я, блядь, знатно покрывал тестами весь этот функционал приложения. Ебать мои старые костыли, сидел, как мартышлюшка, и всё проверял. JUnit для модульных тестов юзал, а для UI — Espresso, этот ёперный театр.
Вот, смотри, как модульный тест выглядит, обычный такой:
@Test
fun `addition should return correct sum`() {
val calculator = Calculator()
assertEquals(4, calculator.add(2, 2))
}
А это уже UI-тест, где кнопки тыкать надо:
@Test
fun loginButton_opensMainScreen() {
onView(withId(R.id.loginButton)).perform(click())
onView(withId(R.id.mainScreen)).check(matches(isDisplayed()))
}
Ну и, конечно, без Mockito никуда — этой штукой зависимости мокировал, чтобы они не лезли, куда не надо, пока я тестирую. Честно говоря, доверия ебать ноль ко всему, что без тестов написано. А так — хоть какая-то уверенность, что не накроется всё медным тазом после каждого чиха. Регрессии искать быстро, код надёжнее становится — в общем, пизда рулю, вещь полезная.