Функция createAndroidComposeRule
Функция createAndroidComposeRule
возвращает правило с реальной activity,
обычно ComponentActivity.
Класс activity передают типом в угловых скобках.
Дерево берут из setContent
в activity или снова задают в тесте через
setContent
у правила.
Подходит, когда нужны intent, тема
или код из onCreate.
Синтаксис
@get:Rule
val composeTestRule = createAndroidComposeRule<MainActivity>()
Пример
Давайте проверим Text, который рисует activity:
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.material3.Text
import androidx.compose.ui.test.assertIsDisplayed
import androidx.compose.ui.test.junit4.createAndroidComposeRule
import androidx.compose.ui.test.onNodeWithText
import org.junit.Rule
import org.junit.Test
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: android.os.Bundle?) {
super.onCreate(savedInstanceState)
setContent {
Text(text = "abcde")
}
}
}
class MainActivityTest {
@get:Rule
val composeTestRule = createAndroidComposeRule<MainActivity>()
@Test
fun activityShowsText() {
composeTestRule.onNodeWithText("abcde").assertIsDisplayed()
}
}
Тест проходит: activity поднялась
и узел с "abcde" виден на экране.
Пример
Давайте перерисуем content из теста поверх activity:
import androidx.activity.ComponentActivity
import androidx.compose.material3.Text
import androidx.compose.ui.test.assertTextEquals
import androidx.compose.ui.test.junit4.createAndroidComposeRule
import androidx.compose.ui.test.onNodeWithText
import org.junit.Rule
import org.junit.Test
class ShellActivity : ComponentActivity()
class ShellActivityTest {
@get:Rule
val composeTestRule = createAndroidComposeRule<ShellActivity>()
@Test
fun setContentInTest() {
composeTestRule.setContent {
Text(text = "12345")
}
composeTestRule.onNodeWithText("12345").assertTextEquals("12345")
}
}
Тест проходит: после setContent в тесте
текст узла совпадает с "12345".
Смотрите также
-
функция
createComposeRule,
тест без activity -
класс
ComponentActivity,
базовый класс activity в примере -
метод
assertTextEquals,
проверка текста узла -
аннотация
Composable,
функции, которые рисуют в setContent