【发布时间】:2013-12-18 17:35:33
【问题描述】:
我正在使用ViewPager 将 2 个片段显示为选项卡。一旦加载了相应的活动,两个片段都会立即加载,而只有第一个片段对用户可见。
因此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;
}
将它实现为 static 方法我可以在我的测试中这样使用它:
assertTrue(MyFragment.isVisibleToUser());
此解决方案的唯一缺点是我必须在我想以这种方式测试的每个 Fragment 中实现这两种方法...有什么改进吗?
【问题讨论】:
标签: android robotium android-testing