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

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

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

Просмотры

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

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

Ключевые концепции

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

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

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

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

Настраивать

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

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

// 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.

Codelab

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

Образцы

{% дословно %} {% endverbatim %} {% дословно %} {% endverbatim %}