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