Протестируйте пользовательский интерфейс вашего приложения, чтобы убедиться в правильности поведения вашего кода Compose. Это позволяет заранее обнаруживать ошибки и улучшать качество вашего приложения.
Compose предоставляет набор API-интерфейсов тестирования для поиска элементов, проверки их атрибутов и выполнения действий пользователя. API-интерфейсы также включают в себя расширенные функции, такие как манипулирование временем. Используйте эти API для создания надежных тестов, проверяющих поведение вашего приложения.
Просмотры
Если вы работаете с представлениями вместо создания, см. общий раздел «Тестирование приложений на Android» .
В частности, хорошим началом будет руководство по автоматическому тестированию пользовательского интерфейса . В нем рассказывается, как можно автоматизировать тесты, запускаемые на устройстве, в том числе при использовании представлений.
Ключевые понятия
Ниже приведены некоторые ключевые концепции тестирования кода Compose.
- Семантика . Тесты Compose взаимодействуют с пользовательским интерфейсом с помощью семантики, которая придает значение частям пользовательского интерфейса и генерируется вместе с иерархией пользовательского интерфейса.
- API-интерфейсы тестирования . Compose предоставляет API-интерфейсы тестирования для поиска элементов, утверждения их состояния и свойств, а также выполнения действий для моделирования взаимодействия с пользователем.
- Синхронизация . По умолчанию тесты Compose автоматически синхронизируются с пользовательским интерфейсом, ожидая его простоя, прежде чем делать утверждения или выполнять действия.
- Взаимодействие . В гибридных приложениях тесты могут беспрепятственно взаимодействовать как с элементами 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
. С помощью этого правила вы можете настроить создание контента или доступ к действию. Вы создаете правила, используя фабричные функции: 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()
}
}
Дополнительные ресурсы
- Тестирование приложений на Android . На главной целевой странице тестирования Android представлено более широкое представление об основах и методах тестирования.
- Основы тестирования . Узнайте больше об основных концепциях тестирования приложений для Android.
- Локальные тесты : некоторые тесты можно запускать локально, на своей рабочей станции.
- Инструментальные тесты . Рекомендуется также проводить инструментальные тесты. То есть тесты, которые запускаются непосредственно на устройстве.
- Непрерывная интеграция . Непрерывная интеграция позволяет интегрировать тесты в конвейер развертывания.
- Тестируйте разные размеры экрана . Поскольку пользователям доступно множество устройств, вам следует протестировать разные размеры экрана.
- Espresso : Хотя знания Espresso предназначены для пользовательских интерфейсов на основе View, они все же могут быть полезны для некоторых аспектов тестирования Compose.
Кодлаб
Чтобы узнать больше, попробуйте кодовую лабораторию Jetpack Compose Testing .
Образцы
Рекомендуется для вас
- Примечание: текст ссылки отображается, когда JavaScript отключен.
- Семантика в Compose
- Вставки окон в Compose
- Другие соображения