Метод performClick
Метод performClick у
SemanticsNodeInteraction
отправляет клик в центр узла.
Работает для Button, clickable
и других элементов с gesture.
После клика часто вызывают
waitForIdle
и assert.
Синтаксис
composeTestRule.onNodeWithText("12345").performClick()
Пример
Давайте нажмём кнопку 12345 и дождёмся abcde:
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.junit4.createComposeRule
import androidx.compose.ui.test.onNodeWithText
import androidx.compose.ui.test.performClick
import org.junit.Rule
import org.junit.Test
class PerformClickTest {
@get:Rule
val composeTestRule = createComposeRule()
@Test
fun clickOpensLine() {
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").assertIsDisplayed()
}
}
Тест проходит: клик по кнопке показал
Text "abcde".
Пример
Давайте нажмём на Text с testTag через performClick:
import androidx.compose.foundation.clickable
import androidx.compose.material3.Text
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
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 androidx.compose.ui.test.performClick
import org.junit.Rule
import org.junit.Test
class ClickableTextTest {
@get:Rule
val composeTestRule = createComposeRule()
@Test
fun tapTag() {
composeTestRule.setContent {
val done = remember { mutableStateOf(false) }
Text(
text = "abcde",
modifier = Modifier
.testTag("tap")
.clickable { done.value = true },
)
if (done.value) {
Text(text = "12345")
}
}
composeTestRule.onNodeWithTag("tap").performClick()
composeTestRule.onNodeWithText("12345").assertIsDisplayed()
}
}
Тест проходит: performClick по tag "tap"
добавил строку "12345".
Смотрите также
-
метод
performTextInput,
ввод текста вместо клика -
метод
onNodeWithTag,
поиск перед performClick -
метод
clickable,
делает Text кликабельным -
класс
SemanticsNodeInteraction,
где объявлен performClick