Я использую ViewPager
для отображения 2 фрагментов в качестве вкладок. Как только соответствующая активность загружена, оба фрагмента загружаются сразу, а пользователю видна только первая.Android + Robotium: вид ViewPager, видимый пользователю
Поэтому view.isShown()
не является достаточным для тестирования, так как этот метод возвращает true для второго фрагмента, который не отображается пользователю.
ViewAsserts.assertOnScreen(decorView, view)
, похоже, ведет себя одинаково и поэтому бесполезен для решения этой проблемы.
Я знаю, что некоторые подобные вопросы были заданы, но ни один из их ответов не удовлетворяет мои потребности. Итак, как проверить это поведение (используя Robotium)?
Решение:
Я решил его в соответствии с предложением Леона с помощью флага в пределах фрагмента, как это:
private static boolean isVisibleToUser = false;
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
MyFragment.isVisibleToUser = isVisibleToUser;
}
public static boolean isVisibleToUser() {
return isVisibleToUser;
}
реализующего его как статический метод, который я могу использовать его в моем испытайте этот путь:
assertTrue(MyFragment.isVisibleToUser());
Единственный недостаток этого soluti что я должен реализовать эти 2 метода в каждом отдельном фрагменте, который я хочу проверить таким образом ... любые улучшения?
звучит хорошо, но как я мог на самом деле ** проверить ** его в тестовом классе? (с использованием robotium/ActivityInstrumentationTestCase2) – FranBran
Я не являюсь familliar с Robotium, поэтому я не могу вам помочь. Однако метод будет срабатывать каждый раз, когда фрагмент добавляется в/становится видимым или уходит/удаляется из представления. Затем вы можете проверить isVisibileToUser boolean, чтобы узнать, добавлено ли оно (true) или удалено (false). –