Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
475 of 502 menu
◀ ▶

Метод performScrollTo

Метод performScrollTo у SemanticsNodeInteraction листает прокручиваемый контейнер к выбранному узлу. Нужен для LazyColumn и длинных списков, где элемент изначально вне экрана. После прокрутки вызывают assert.

Синтаксис

composeTestRule.onNodeWithText("abcde").performScrollTo()

Пример

Давайте прокрутим список к последней строке:

import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items 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 androidx.compose.ui.test.performScrollTo import org.junit.Rule import org.junit.Test class ScrollToTest { @get:Rule val composeTestRule = createComposeRule() @Test fun scrollsToTarget() { val lines = List(30) { if (it == 29) "abcde" else "12345" } composeTestRule.setContent { LazyColumn { items(lines) { line -> Text(text = line) } } } composeTestRule.onNodeWithText("abcde").performScrollTo() composeTestRule.onNodeWithText("abcde").assertIsDisplayed() } }

Тест проходит: performScrollTo довёл до узла с "abcde", assertIsDisplayed успешен.

Пример

Давайте прокрутим к строке по tag внутри списка:

import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.itemsIndexed import androidx.compose.material3.Text import androidx.compose.ui.Modifier import androidx.compose.ui.platform.testTag import androidx.compose.ui.test.assertTextEquals import androidx.compose.ui.test.junit4.createComposeRule import androidx.compose.ui.test.onNodeWithTag import androidx.compose.ui.test.performScrollTo import org.junit.Rule import org.junit.Test class ScrollToTagTest { @get:Rule val composeTestRule = createComposeRule() @Test fun scrollsToTag() { composeTestRule.setContent { LazyColumn { itemsIndexed(List(25) { "12345" }) { index, line -> Text( text = if (index == 24) "abcde" else line, modifier = Modifier.testTag("row-$index"), ) } } } composeTestRule.onNodeWithTag("row-24").performScrollTo() composeTestRule.onNodeWithTag("row-24").assertTextEquals("abcde") } }

Тест проходит: узел tag "row-24" прокрутили и текст совпал с "abcde".

Смотрите также

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить