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

Метод onNodeWithTag

Метод onNodeWithTag у ComposeContentTestRule находит узел по строке testTag. Tag задают в коде через Modifier.testTag, чтобы не зависеть от видимого текста. Результат - SemanticsNodeInteraction.

Синтаксис

composeTestRule.onNodeWithTag("note")

Параметры

Параметр Описание
tag Строка, переданная в Modifier.testTag.
useUnmergedTree Если true, ищут в немerged semantics tree.

Пример

Давайте проверим Text с tag note:

import androidx.compose.material3.Text import androidx.compose.ui.Modifier import androidx.compose.ui.platform.testTag import androidx.compose.ui.test.assertIsDisplayed import androidx.compose.ui.test.junit4.createComposeRule import androidx.compose.ui.test.onNodeWithTag import org.junit.Rule import org.junit.Test class OnNodeWithTagTest { @get:Rule val composeTestRule = createComposeRule() @Test fun findsByTag() { composeTestRule.setContent { Text( text = "abcde", modifier = Modifier.testTag("note"), ) } composeTestRule.onNodeWithTag("note").assertIsDisplayed() } }

Тест проходит: узел с tag "note" найден на дереве.

Пример

Давайте различим два текста разными tag:

import androidx.compose.foundation.layout.Column import androidx.compose.material3.Text import androidx.compose.ui.Modifier import androidx.compose.ui.platform.testTag import androidx.compose.ui.test.assertTextEquals import androidx.compose.ui.test.junit4.createComposeRule import androidx.compose.ui.test.onNodeWithTag import org.junit.Rule import org.junit.Test class TwoTagsTest { @get:Rule val composeTestRule = createComposeRule() @Test fun readsSecondLine() { composeTestRule.setContent { Column { Text( text = "abcde", modifier = Modifier.testTag("first"), ) Text( text = "12345", modifier = Modifier.testTag("second"), ) } } composeTestRule.onNodeWithTag("second").assertTextEquals("12345") } }

Тест проходит: tag "second" указывает на Text "12345".

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

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