Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
462 of 502 menu
◀ ▶

Функция createAndroidComposeRule

Функция createAndroidComposeRule возвращает правило с реальной activity, обычно ComponentActivity. Класс activity передают типом в угловых скобках. Дерево берут из setContent в activity или снова задают в тесте через setContent у правила. Подходит, когда нужны intent, тема или код из onCreate.

Синтаксис

@get:Rule val composeTestRule = createAndroidComposeRule<MainActivity>()

Пример

Давайте проверим Text, который рисует activity:

import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.material3.Text import androidx.compose.ui.test.assertIsDisplayed import androidx.compose.ui.test.junit4.createAndroidComposeRule import androidx.compose.ui.test.onNodeWithText import org.junit.Rule import org.junit.Test class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: android.os.Bundle?) { super.onCreate(savedInstanceState) setContent { Text(text = "abcde") } } } class MainActivityTest { @get:Rule val composeTestRule = createAndroidComposeRule<MainActivity>() @Test fun activityShowsText() { composeTestRule.onNodeWithText("abcde").assertIsDisplayed() } }

Тест проходит: activity поднялась и узел с "abcde" виден на экране.

Пример

Давайте перерисуем content из теста поверх activity:

import androidx.activity.ComponentActivity import androidx.compose.material3.Text import androidx.compose.ui.test.assertTextEquals import androidx.compose.ui.test.junit4.createAndroidComposeRule import androidx.compose.ui.test.onNodeWithText import org.junit.Rule import org.junit.Test class ShellActivity : ComponentActivity() class ShellActivityTest { @get:Rule val composeTestRule = createAndroidComposeRule<ShellActivity>() @Test fun setContentInTest() { composeTestRule.setContent { Text(text = "12345") } composeTestRule.onNodeWithText("12345").assertTextEquals("12345") } }

Тест проходит: после setContent в тесте текст узла совпадает с "12345".

Смотрите также

  • функция createComposeRule,
    тест без activity
  • класс ComponentActivity,
    базовый класс activity в примере
  • метод assertTextEquals,
    проверка текста узла
  • аннотация Composable,
    функции, которые рисуют в setContent
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить