Проверьте макет Compose

Протестируйте пользовательский интерфейс вашего приложения, чтобы убедиться в корректности работы кода Compose. Это позволит вам выявлять ошибки на ранних стадиях и повышать качество вашего приложения.

Compose предоставляет набор API для тестирования, позволяющий находить элементы, проверять их атрибуты и выполнять действия пользователя. API также включают расширенные функции, такие как манипулирование временем. Используйте эти API для создания надежных тестов, проверяющих поведение вашего приложения.

Мнения

Если вы работаете с представлениями (views) вместо Compose, см. общий раздел «Тестирование приложений на Android» .

В частности, хорошей отправной точкой может стать руководство по автоматизации UI-тестов . В нем подробно описано, как автоматизировать тесты, выполняемые на устройстве, в том числе при использовании представлений.

Ключевые понятия

Ниже приведены некоторые ключевые понятия для тестирования вашего кода Compose:

  • Семантика : Семантика придает смысл вашему пользовательскому интерфейсу, позволяя тестам взаимодействовать с конкретными элементами.
  • API для тестирования : API для тестирования позволяют находить элементы, проверять их атрибуты и выполнять действия пользователя.
  • Синхронизация : Синхронизация проверяет, что тесты ожидают, пока пользовательский интерфейс перейдет в режим ожидания, прежде чем выполнять действия или делать утверждения.
  • Взаимодействие : Взаимодействие позволяет тестам работать как с элементами, созданными с помощью Compose, так и с элементами, созданными на основе View, в одном и том же приложении.

Шпаргалка по тестированию

В шпаргалке по тестированию вы найдете обзор всех ключевых тем, которые следует изучить при тестировании в Compose.

Настраивать

Настройте свое приложение так, чтобы оно позволяло тестировать код, созданный с помощью Compose.

Сначала добавьте следующие зависимости в файл build.gradle модуля, содержащего ваши UI-тесты:

// Test rules and transitive dependencies:
androidTestImplementation("androidx.compose.ui:ui-test-junit4:$compose_version")
// Needed for createComposeRule(), but not for createAndroidComposeRule<YourActivity>():
debugImplementation("androidx.compose.ui:ui-test-manifest:$compose_version")

Этот модуль включает в себя ComposeTestRule и реализацию для Android под названием AndroidComposeTestRule . С помощью этого правила вы можете устанавливать содержимое Compose или получать доступ к активности. Правила создаются с помощью фабричных функций: createComposeRule или, если вам нужен доступ к активности, createAndroidComposeRule . Типичный UI-тест для Compose выглядит следующим образом:

// file: app/src/androidTest/java/com/package/MyComposeTest.kt

class MyComposeTest {

    @get:Rule val composeTestRule = createComposeRule()
    // use createAndroidComposeRule<YourActivity>() if you need access to
    // an activity

    @Test
    fun myTest() {
        // Start the app
        composeTestRule.setContent {
            MyAppTheme {
                MainScreen(uiState = fakeUiState, /*...*/)
            }
        }

        composeTestRule.onNodeWithText("Continue").performClick()

        composeTestRule.onNodeWithText("Welcome").assertIsDisplayed()
    }
}

Дополнительные ресурсы

  • Тестирование приложений на Android : Главная страница, посвященная тестированию Android, предоставляет более широкий обзор основ и методов тестирования.
  • Основы тестирования : Узнайте больше об основных концепциях тестирования Android-приложений.
  • Локальные тесты : Вы можете запустить некоторые тесты локально, на своей рабочей станции.
  • Инструментальные тесты : Рекомендуется также запускать инструментальные тесты, то есть тесты, которые выполняются непосредственно на устройстве.
  • Непрерывная интеграция : Непрерывная интеграция позволяет интегрировать ваши тесты в конвейер развертывания.
  • Протестируйте разные размеры экрана : учитывая большое количество доступных пользователям устройств, следует протестировать их работу на экранах разных размеров.
  • Espresso : Хотя этот язык программирования предназначен для пользовательских интерфейсов на основе представлений, знание Espresso может быть полезно и для некоторых аспектов тестирования с помощью Compose.

Кодлаб

Чтобы узнать больше, попробуйте пройти практическое занятие по тестированию с помощью Jetpack Compose .

Образцы

{% verbatim %} {% endverbatim %} {% verbatim %} {% endverbatim %}