Как тестировать @Composable функции

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

Ответ

Для тестирования @Composable функций используйте ComposeTestRule из библиотеки androidx.compose.ui:ui-test-junit4. Основные подходы:

  1. Проверка отображения элементов:
@Test
fun testGreeting() {
    composeTestRule.setContent {
        Greeting(name = "Android")
    }
    composeTestRule.onNodeWithText("Hello Android!").assertExists()
}
  1. Проверка взаимодействия:
@Test
fun testButtonClick() {
    var clicked = false
    composeTestRule.setContent {
        Button(onClick = { clicked = true }) {
            Text("Click me")
        }
    }
    composeTestRule.onNodeWithText("Click me").performClick()
    assertTrue(clicked)
}

Ключевые моменты:

  • Используйте setContent для отрисовки компонента
  • Для поиска элементов применяйте onNodeWithText, onNodeWithTag и другие селекторы
  • Для проверок используйте assertExists(), assertIsDisplayed() и т.д.
  • Для взаимодействия - performClick(), performTextInput()