Метод onNodeWithContentDescription
Метод onNodeWithContentDescription у
ComposeContentTestRule
находит узел по строке
contentDescription.
Её задают у Icon и других элементов
без видимого текста.
Дальше работают с
SemanticsNodeInteraction.
Синтаксис
composeTestRule.onNodeWithContentDescription("abcde")
Параметры
| Параметр | Описание |
|---|---|
label |
Ожидаемое contentDescription узла. |
substring |
Если true, достаточно части описания.
|
ignoreCase |
Если true, регистр не учитывают.
|
Пример
Давайте найдём Icon по описанию abcde:
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Home
import androidx.compose.material3.Icon
import androidx.compose.ui.test.assertIsDisplayed
import androidx.compose.ui.test.junit4.createComposeRule
import androidx.compose.ui.test.onNodeWithContentDescription
import org.junit.Rule
import org.junit.Test
class ContentDescriptionTest {
@get:Rule
val composeTestRule = createComposeRule()
@Test
fun findsIcon() {
composeTestRule.setContent {
Icon(
imageVector = Icons.Filled.Home,
contentDescription = "abcde",
)
}
composeTestRule.onNodeWithContentDescription("abcde").assertIsDisplayed()
}
}
Тест проходит: Icon с описанием "abcde"
найден и виден.
Пример
Давайте найдём вторую иконку по описанию 12345:
import androidx.compose.foundation.layout.Row
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Home
import androidx.compose.material.icons.filled.Settings
import androidx.compose.material3.Icon
import androidx.compose.ui.test.assertIsDisplayed
import androidx.compose.ui.test.junit4.createComposeRule
import androidx.compose.ui.test.onNodeWithContentDescription
import org.junit.Rule
import org.junit.Test
class TwoDescriptionsTest {
@get:Rule
val composeTestRule = createComposeRule()
@Test
fun findsSecondIcon() {
composeTestRule.setContent {
Row {
Icon(
imageVector = Icons.Filled.Home,
contentDescription = "abcde",
)
Icon(
imageVector = Icons.Filled.Settings,
contentDescription = "12345",
)
}
}
composeTestRule.onNodeWithContentDescription("12345").assertIsDisplayed()
}
}
Тест проходит: узел с описанием "12345"
найден среди двух Icon.
Смотрите также
-
метод
onNodeWithText,
когда есть видимый текст -
метод
onNodeWithTag,
поиск по testTag -
метод
performClick,
действие над найденным узлом -
класс
ComposeContentTestRule,
где объявлен onNodeWithContentDescription