Класс SemanticsNodeInteraction
Класс SemanticsNodeInteraction
возвращается из
onNodeWithText
и похожих методов правила.
Методы assert проверяют текст и видимость,
методы perform имитируют клик, ввод и прокрутку.
Цепочку начинают после
setContent
в тесте с @Test.
Синтаксис
composeTestRule.onNodeWithText("abcde").assertIsDisplayed()
Методы
| Метод | Описание |
|---|---|
assertIsDisplayed |
Падает, если узел не виден на экране. |
assertDoesNotExist |
Падает, если узел всё ещё есть в дереве. |
assertTextEquals |
Сравнивает текст узла с ожидаемой строкой. |
performClick |
Имитирует нажатие на узел. |
performTextInput |
Вводит текст в editable поле. |
performScrollTo |
Прокручивает список, пока узел не попадёт в видимую область. |
Пример
Давайте проверим текст и нажмём кнопку:
import androidx.compose.material3.Button
import androidx.compose.material3.Text
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.ui.test.assertIsDisplayed
import androidx.compose.ui.test.assertTextEquals
import androidx.compose.ui.test.junit4.createComposeRule
import androidx.compose.ui.test.onNodeWithText
import androidx.compose.ui.test.performClick
import org.junit.Rule
import org.junit.Test
class InteractionChainTest {
@get:Rule
val composeTestRule = createComposeRule()
@Test
fun clickShowsSecondLine() {
composeTestRule.setContent {
val open = remember { mutableStateOf(false) }
Button(onClick = { open.value = true }) {
Text(text = "12345")
}
if (open.value) {
Text(text = "abcde")
}
}
composeTestRule.onNodeWithText("12345").performClick()
composeTestRule.onNodeWithText("abcde").assertTextEquals("abcde")
}
}
Тест проходит: performClick сработал,
новый Text "abcde" прошёл assertTextEquals.
Смотрите также
-
класс
ComposeContentTestRule,
откуда берут onNodeWithText -
метод
performTextInput,
ввод в TextField -
метод
waitForIdle,
перед assert после анимации -
функция
createComposeRule,
правило для цепочки assert