Подтвердить что ты не робот

Espresso - withEffectiveVisibility vs isDisplayed

В чем разница между isDisplayed и withEffectiveVisibility?

onView(withText("Much Dagger")).check(matches(withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)));


onView(withText("Much Dagger")).check(matches(ViewMatchers.isDisplayed());
4b9b3361

Ответ 1

Согласно документации

Возвращает совпадение, соответствующее {@link View}, которое имеет "эффективную" видимость, установленную для данного значения. Эффективная видимость учитывает не только ценность видимости зрения, но и ее предков. В случае View.VISIBLE это означает, что вид и все его предки имеют видимость = VISIBLE. В случае GONE и INVISIBLE, это противоположность - любой GONE или INVISIBLE родитель сделает всех своих детей эффективной видимостью.

Примечание:

В отличие от того, что может означать имя, просмотр видимости напрямую не преобразуется в то, отображается ли представление на экране (для этого используется isDisplayed()). Например, представление и все его предки могут иметь видимость = VISIBLE, но, возможно, нужно прокручивать представление, чтобы быть на самом деле видимым для пользователя. Если вы специально не нацеливаете значение видимости в своем тесте, используйте isDisplayed.

Поэтому, если для проверки видимости видимости используется isDisplayed(), но для другой проверки, если невидимая и пропавшая используется withEffectiveVisibilty()