Метод 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".
Смотрите также
-
метод
onNodeWithText,
поиск по видимой строке -
метод
onNodeWithContentDescription,
поиск по contentDescription -
класс
Modifier,
куда вешают testTag -
класс
ComposeContentTestRule,
где объявлен onNodeWithTag