Класс ComposeContentTestRule
Класс ComposeContentTestRule
возвращается из
createComposeRule
и используется в instrumented-тестах.
Метод
setContent
рисует composable-дерево.
Методы поиска вроде
onNodeWithText
возвращают
SemanticsNodeInteraction
для проверок и жестов.
Перед assert иногда вызывают
waitForIdle.
Синтаксис
composeTestRule.setContent { Text("abcde") }
composeTestRule.onNodeWithText("abcde")
Методы
| Метод | Описание |
|---|---|
setContent |
Ставит composable-содержимое для текущего теста. |
onNodeWithText |
Ищет узел по видимому тексту. |
onNodeWithTag |
Ищет узел по testTag из Modifier.testTag. |
onNodeWithContentDescription |
Ищет узел по contentDescription. |
waitForIdle |
Ждёт, пока Compose закончит перерисовку и анимации. |
Пример
Давайте найдём Text по строке и по tag:
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 androidx.compose.ui.test.onNodeWithText
import org.junit.Rule
import org.junit.Test
class RuleLookupTest {
@get:Rule
val composeTestRule = createComposeRule()
@Test
fun findByTextAndTag() {
composeTestRule.setContent {
Text(
text = "abcde",
modifier = Modifier.testTag("note"),
)
}
composeTestRule.onNodeWithText("abcde").assertIsDisplayed()
composeTestRule.onNodeWithTag("note").assertIsDisplayed()
}
}
Тест проходит: оба поиска находят один и тот же видимый Text.
Смотрите также
-
класс
SemanticsNodeInteraction,
результат onNodeWithText -
функция
createComposeRule,
создаёт composeTestRule -
метод
waitForIdle,
ожидание перед проверкой -
аннотация
Composable,
функции внутри setContent