我使用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的唯一缺点就是我必须在每一个我希望以这种方式测试的片段中实现这两种方法......任何改进?
听起来不错,但是我怎么能**在测试类中测试它? (使用robotium/ActivityInstrumentationTestCase2) – FranBran
我不是familliar与Robotium,所以我不能帮你。但是,每次将片段添加到/变为可见或者从视图中移除/离开时,该方法都会触发。然后,您可以检查isVisibileToUser布尔值以查看它是添加(true)还是删除(false)。 –