Функция createComposeRule
Функция createComposeRule возвращает
ComposeContentTestRule
для instrumented-тестов Compose.
Activity не поднимается: дерево рисуют через
setContent
внутри метода с аннотацией Test.
Правило подключают полем с @get:Rule,
узлы ищут через
onNodeWithText,
проверки делают у
SemanticsNodeInteraction.
Синтаксис
@get:Rule
val composeTestRule = createComposeRule()
Пример
Давайте проверим, что Text с abcde виден:
import androidx.compose.material3.Text
import androidx.compose.ui.test.assertIsDisplayed
import androidx.compose.ui.test.junit4.createComposeRule
import androidx.compose.ui.test.onNodeWithText
import org.junit.Rule
import org.junit.Test
class NoteComposeTest {
@get:Rule
val composeTestRule = createComposeRule()
@Test
fun textIsShown() {
composeTestRule.setContent {
Text(text = "abcde")
}
composeTestRule.onNodeWithText("abcde").assertIsDisplayed()
}
}
Тест проходит: на дереве найден узел
с текстом "abcde" и он отображается.
Пример
Давайте убедимся, что второй текст тоже на месте:
import androidx.compose.foundation.layout.Column
import androidx.compose.material3.Text
import androidx.compose.ui.test.assertIsDisplayed
import androidx.compose.ui.test.junit4.createComposeRule
import androidx.compose.ui.test.onNodeWithText
import org.junit.Rule
import org.junit.Test
class TwoLinesComposeTest {
@get:Rule
val composeTestRule = createComposeRule()
@Test
fun bothTextsAreShown() {
composeTestRule.setContent {
Column {
Text(text = "abcde")
Text(text = "12345")
}
}
composeTestRule.onNodeWithText("12345").assertIsDisplayed()
}
}
Тест проходит: узел с "12345"
найден и помечен как видимый.
Смотрите также
-
функция
createAndroidComposeRule,
правило с реальной activity -
класс
ComposeContentTestRule,
тип возвращаемого правила -
метод
setContent,
которым рисуют UI в тесте -
команда
gradlew test,
запуск локальных тестов Gradle