Протестируйте макет Compose

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

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

Просмотры

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

Рекомендуем начать с руководства Автоматизация тестирования пользовательского интерфейса. В нем рассказывается, как автоматизировать тесты, которые выполняются на устройстве, в том числе при использовании представлений.

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

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

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

Памятка по тестированию

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

Настроить

Настройте приложение, чтобы протестировать код 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. Типичный тест пользовательского интерфейса для 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()
    }
}

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

Практическая работа

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

Образцы