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

Метод setContent

Метод setContent у ComposeContentTestRule монтирует composable-функции в изолированном тестовом хосте. Вызывают внутри Test после создания правила через createComposeRule. Дальше узлы ищут через onNodeWithText и проверяют у SemanticsNodeInteraction.

Синтаксис

composeTestRule.setContent { Text(text = "abcde") }

Параметры

Параметр Описание
content Лямбда с composable-элементами, которые рисуют в тесте.

Пример

Давайте нарисуем одну строку и проверим её:

import androidx.compose.material3.Text import androidx.compose.ui.test.assertIsDisplayed import androidx.compose.ui.test.junit4.createComposeRule import androidx.compose.ui.test.onNodeWithText import org.junit.Rule import org.junit.Test class SetContentTest { @get:Rule val composeTestRule = createComposeRule() @Test fun rendersText() { composeTestRule.setContent { Text(text = "abcde") } composeTestRule.onNodeWithText("abcde").assertIsDisplayed() } }

Тест проходит: setContent нарисовал Text, узел с "abcde" отображается.

Пример

Давайте сменим content во второй проверке:

import androidx.compose.material3.Text import androidx.compose.ui.test.assertTextEquals import androidx.compose.ui.test.junit4.createComposeRule import androidx.compose.ui.test.onNodeWithText import org.junit.Rule import org.junit.Test class ReplaceContentTest { @get:Rule val composeTestRule = createComposeRule() @Test fun updatesText() { composeTestRule.setContent { Text(text = "12345") } composeTestRule.onNodeWithText("12345").assertTextEquals("12345") } }

Тест проходит: на экране теста виден только текст "12345".

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

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