2017-03-07 2 views
1

I haben RecyclerViewEspresso RecyclerView in SwipeRefreshLayout Blöcken Test

<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> 

Hexen in Fragment in Viewpager ist. Ich verwende Volley für Serveranrufe mit benutzerdefinierten IdleResurs.

Ich möchte die Schublade öffnen:

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

Aber der Test hängt mit Fehler:

Could not launch intent Intent within 45 seconds 

Wenn ich manuell die RecycleView scrollen oder die sichtbare Seite des Adapters ändern Sie den Test fortgesetzt und Die Schublade wird geöffnet.

Antwort

0

Der Ladeindikator von SwipeRefreshLayout wird möglicherweise angezeigt und blockiert somit die Benutzeroberfläche, da sie animiert wird. Eine schnelle Lösung, um zu vermeiden, dass das Layout die Animation anzeigt, besteht darin, stattdessen Folgendes zu verwenden:

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) 
     } 
    } 

} 
Verwandte Themen