SwipeRefreshLayout中的Espresso RecyclerView阻止测试

时间:2017-03-07 14:10:50

标签: android android-espresso

我有RecyclerView

   <android.support.v4.widget.SwipeRefreshLayout
    android:id="@+id/dashboard_swiperefreshlayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:scrollbars="vertical">

    <android.support.v7.widget.RecyclerView
        android:id="@+id/events_dashboard_listview"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:scrollbars="none"/>

</android.support.v4.widget.SwipeRefreshLayout>

Witch在Viewpager中处于片段状态。 我正在使用自定义IdleResurs进行服务器调用。

我想打开抽屉:

openDrawer(R.id.drawer_layout);
isOpen();

但测试因错误而挂起:

Could not launch intent Intent within 45 seconds

如果我手动滚动RecycleView或更改适配器中的可见页面,测试会继续,抽屉也会打开。

1 个答案:

答案 0 :(得分:0)

可能会显示SwipeRefreshLayout的加载指示器,从而阻止UI,因为它是动画。一个快速修复,以避免布局显示动画是使用这样的东西:

class TestableSwipeRefreshLayout : SwipeRefreshLayout {

    constructor(context: Context) : super(context)

    constructor(context: Context, attrs: AttributeSet) : super(context, attrs)

    companion object {

        var isTestRunning = false

    }

    override fun setRefreshing(refreshing: Boolean) {
        if (!isTestRunning) {
            super.setRefreshing(refreshing)
        }
    }

}