Android 安卓&x2B;Robotium:用户是否可以看到ViewPager的视图
我正在使用Android 安卓&x2B;Robotium:用户是否可以看到ViewPager的视图,android,robotium,android-testing,Android,Robotium,Android Testing,我正在使用ViewPager将两个片段显示为选项卡。一旦加载了相应的活动,两个片段将立即加载,而只有第一个片段对用户可见 因此,view.isShown()对于测试是不够的,因为该方法对于用户不可见的第二个片段返回true ViewAsserts.assertOnScreen(decorView,view)的行为方式似乎相同,因此对解决此问题毫无用处 我知道有人问过一些类似的问题,但他们的回答都不能满足我的需要。那么如何测试这种行为(使用Robotium) 解决方案: 根据Leon的建议,我在片
ViewPager
将两个片段显示为选项卡。一旦加载了相应的活动,两个片段将立即加载,而只有第一个片段对用户可见
因此,view.isShown()
对于测试是不够的,因为该方法对于用户不可见的第二个片段返回true
ViewAsserts.assertOnScreen(decorView,view)
的行为方式似乎相同,因此对解决此问题毫无用处
我知道有人问过一些类似的问题,但他们的回答都不能满足我的需要。那么如何测试这种行为(使用Robotium)
解决方案:
根据Leon的建议,我在片段中使用了一个标志,如下所示:
private static boolean isVisibleToUser = false;
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
MyFragment.isVisibleToUser = isVisibleToUser;
}
public static boolean isVisibleToUser() {
return isVisibleToUser;
}
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser) {
//Fragment is selected in ViewPager
//Put your "on appear" validation/loading here
}
}
将其作为静态方法实现我可以在测试中使用它:
assertTrue(MyFragment.isVisibleToUser());
这个解决方案的唯一缺点是,我必须在我想用这种方式测试的每个片段中实现这两个方法。。。有什么改进吗?使用
OnPageChangedListener
检测更改并维护对当前可见片段/页面的引用
或者,
GetCurrentItem()
可能适用于您,如下所述:您可以在片段中覆盖setUserVisibleHint
:
private static boolean isVisibleToUser = false;
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
MyFragment.isVisibleToUser = isVisibleToUser;
}
public static boolean isVisibleToUser() {
return isVisibleToUser;
}
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser) {
//Fragment is selected in ViewPager
//Put your "on appear" validation/loading here
}
}
每次在ViewPager
中显示或隐藏片段时,此方法都会触发
与
view.isShown()
相反,此方法会考虑“已加载但不可见”状态。是否有方法检查用户是否可以看到特定布局?(getVisibility在本例中不是一个解决方案,因为它总是返回可见的)听起来不错,但我如何在测试类中实际测试它呢?(使用robotium/ActivityInstrumentationTestCase2)我不熟悉robotium,因此我无法在这方面帮助您。但是,每次将片段添加到视图中/变得可见或从视图中移除/时,该方法都将激发。然后,您可以检查isVisibileToUser布尔值,查看它是被添加(true)还是被删除(false)。