【问题标题】:Android+Robotium: is view of ViewPager visible to userAndroid+Robotium:用户可以看到 ViewPager 的视图
【发布时间】: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


    【解决方案1】:

    您可以像这样在片段中覆盖setUserVisibleHint

    @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() 不同,此方法确实考虑了“已加载但不可见”状态。

    【讨论】:

    • 听起来不错,但我怎么能在测试类中真正测试呢? (使用机器人/ActivityInstrumentationTestCase2)
    • 我对 Robotium 不熟悉,所以无法帮助您。但是,每次将片段添加到/变得可见或离开/从视图中删除时,该方法都会触发。然后,您可以检查 isVisibileToUser 布尔值以查看它是已添加 (true) 还是已删除 (false)。
    【解决方案2】:

    使用OnPageChangedListener 检测更改并维护对当前可见片段/页面的引用。

    http://developer.android.com/reference/android/support/v4/view/ViewPager.OnPageChangeListener.html

    或者GetCurrentItem() 可能对您有用,详见此处:How do you get the current page number of a ViewPager for Android?

    【讨论】:

    • 有没有办法检查用户是否可以看到特定的布局? (在这种情况下,getVisibility 不是解决方案,因为它总是会返回 VISIBLE)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多