Espresso, Bildlauf funktioniert nicht, wenn sich NestedScrollView oder RecyclerView in CoordinatorLayout befindet
Es sieht aus wieCoordinatorLayout
unterbricht das Verhalten von Espresso-Aktionen wiescrollTo()
oderRecyclerViewActions.scrollToPosition()
.
Für ein Layout wie dieses:
<android.support.design.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v4.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
...
</android.support.v4.widget.NestedScrollView>
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" >
...
</android.support.design.widget.AppBarLayout>
</android.support.design.widget.CoordinatorLayout>
Wenn ich versuche, zu einer Ansicht innerhalb des @ zu scrollNestedScrollView
usingViewActions.scrollTo()
Das erste Problem, das ich finde, ist, dass ich ein @ bekomPerformException
. Dies liegt daran, dass diese Aktion nur @ unterstützScrollView
undNestedScrollView
erweitert es nicht. Eine Problemumgehung für dieses Problem wird unter @ erläuterHie, im Grunde können wir den Code in @ kopierscrollTo()
und ändern Sie die Einschränkungen zu supportNestedScrollView
. Dies scheint zu funktionieren, wenn dasNestedScrollView
ist nicht in einemCoordinatorLayout
aber sobald du es in ein @ steckCoordinatorLayout
Der Bildlauf schlägt fehl.
Für das gleiche Layout, wenn ich das @ ersetNestedScrollView
mit einerRecyclerView
es gibt auch probleme mit dem scrollen.
In diesem Fall verwende ichRecyclerViewAction.scrollToPosition(position)
. Im Gegensatz zu denNestedScrollView
, hier kann ich ein Scrollen sehen. Es sieht jedoch so aus, als würde der Bildlauf an der falschen Position ausgeführt. Wenn ich zum Beispiel zur letzten Position scrolle, wird die vorletzte, aber nicht die letzte Position angezeigt. Wenn ich das @ beweRecyclerView
aus demCoordinatorLayout
das scrollen funktioniert wie es sollte.
erzeit können wir keinen Espresso-Test für die Bildschirme schreiben, die @ verwendeCoordinatorLayout
aufgrund dieser Probleme. Treten die gleichen Probleme auf oder kennen Sie eine Problemumgehung?