Семантика

Тесты пользовательского интерфейса в Compose используют семантику для взаимодействия с иерархией пользовательского интерфейса. Семантика, как следует из названия, придает смысл элементу пользовательского интерфейса. В этом контексте "фрагмент интерфейса" (или элемент) может означать что угодно – от одной composable-функции до полноэкранного режима. Дерево семантики генерируется вместе с иерархией пользовательского интерфейса и описывает ее.

Подробнее о семантике в Compose…

Диаграмма, показывающая типичный макет пользовательского интерфейса и то, как этот макет будет сопоставляться с соответствующим семантическим деревом

Рисунок 1. Типичная иерархия интерфейса и ее дерево семантики.

Фреймворк семантики в основном используется для специальных возможностей, поэтому тесты используют информацию об иерархии пользовательского интерфейса, предоставляемую семантикой. Разработчики сами решают, какие данные и в каком объеме предоставлять.

Кнопка с изображением и текстом

Рисунок 2. Обычная кнопка со значком и текстом.

Например, для кнопки, состоящей из значка и текстового элемента, дерево семантики по умолчанию содержит только текстовую метку "Нравится". Это связано с тем, что некоторые составные элементы, такие как Text, уже предоставляют некоторые свойства дереву семантики. Вы можете добавить свойства в дерево семантики с помощью Modifier.

MyButton(
    modifier = Modifier.semantics { contentDescription = "Add to favorites" }
)

Дополнительные ресурсы