Протестируйте пользовательский интерфейс вашего приложения, чтобы убедиться в корректности работы кода 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 .
Образцы
Рекомендуем вам
- Примечание: текст ссылки отображается, когда JavaScript отключен.
- Семантика в композиции
- Вставки окон в Compose
- Другие соображения