Покрывал ли тестами функционал приложения

Ответ

Да, покрывал тестами функционал приложения. Использовал 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 никуда — этой штукой зависимости мокировал, чтобы они не лезли, куда не надо, пока я тестирую. Честно говоря, доверия ебать ноль ко всему, что без тестов написано. А так — хоть какая-то уверенность, что не накроется всё медным тазом после каждого чиха. Регрессии искать быстро, код надёжнее становится — в общем, пизда рулю, вещь полезная.