В тесте Android как проверить, что вид отображается? - PullRequest
3 голосов
/ 07 февраля 2011

Я пишу тестовый пример пользовательского интерфейса (используя ActivityUnitTestCase) и хотел бы проверить, виден ли в определенный момент времени подкласс View для пользователя. Я нашел метод View # isShown () , который утверждает, что делает именно это - проверяет поле видимости этого элемента и всех его родителей - но каким-то образом он всегда возвращает «false» для всех элементов. Я буду благодарен за помощь. Если это облегчает, я могу вставить некоторый код.

Кроме того, я обнаружил ViewAsserts # assertOnScreen (Просмотр источника, Просмотр представления) , но, похоже, это тоже не правильно - всегда возвращает true. Возможно, я называю это неправильно: assertOnScreen (viewImTesting.getRootView (), viewImTesting)?

Спасибо, Jan

Ответы [ 3 ]

2 голосов
/ 03 июня 2011

Я нашел разумное решение: просто проверяя Просмотр # getVisibility () против Просмотр # VISIBLE , Просмотр # невидимый или Просмотр # GONE .

Это, вероятно, не работает, например, когда родительский вид не виден, но для этого видимости установлено значение VISIBLE, но для большинства случаев этого должно быть достаточно.

0 голосов
/ 04 ноября 2011

Может быть, это слишком поздно? Просто для того, чтобы вызвать отклик у @dtmilano и других экспертов по Android, похоже, есть некоторые различия в интерпретации видимости "ушел".

Хотя видимость = ушел в списке , как будто представление полностью не добавлено, это определение , вероятно, ближе к истине. Я понимаю, что на самом деле это все еще на экране с координатами X и Y, но ширина и высота будет 0.

И когда я копаюсь в ViewAsserts.java, assertOnScreen () имеет дело только с координатой y представления в источнике, гарантируя, что он больше 0, но не больше высоты источника.

В заключение: assertOnScreen, вероятно, не тот метод, который следует использовать, если вы проверяете видимость представления, и я полагаю, что именно это вы пытаетесь сделать, основываясь на своем вопросе.

Надеюсь, что приведенная выше информация является полезной (и правильной)!

0 голосов
/ 04 марта 2011

Попробуйте использовать

final View origin = activityImTesting.getWindow().getDecorView();
android.test.ViewAsserts.assertOnScreen(origin, viewImTesting);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...