Prueba Espresso NestedScrollView – "Error al ejecutar 'desplazamiento a' en vista 'con id:"

Necesito desplácese abajo a través de mi NestedScrollView para probar mi archivo del xml con Espresso, pero consigo el mensaje de error: "Error que realiza" rueda a "en la visión" con el id: "

Varios otros puestos que parecen tener un problema similar.

He seguido las instrucciones de esto: Android espresso NestedScrollView, cómo desplazarse a la parte inferior

Ahora obtengo el error mencionado, y encontré esta publicación: Se intentó desplazar a la vista, pero la vista no se muestra

No tengo relleno en mi NestedScrollView – Incluso traté de quitar el relleno del XML alltogether, para propósitos de prueba, pero no hizo ninguna diferencia.

Esta es mi prueba (hasta ahora no se supone que haga nada, pero desplácese hacia abajo):

@Test public void testScrollDownAbilityOfDetailsScrollView(){ goToSpecificItemOnStream(streamItemWithOneImage); onView(withId(R.id.end_of_details)) .perform(ScrollToAction.betterScrollTo()); } 

Utiliza una clase personalizada de desplazamiento a la acción:

  public final class ScrollToAction implements ViewAction { private static final String TAG = ScrollToAction.class.getSimpleName(); @SuppressWarnings("unchecked") @Override public Matcher<View> getConstraints() { return allOf(withEffectiveVisibility(Visibility.VISIBLE), isDescendantOfA(anyOf( isAssignableFrom(ScrollView.class), isAssignableFrom(HorizontalScrollView.class), isAssignableFrom(NestedScrollView.class)))); } @Override public void perform(UiController uiController, View view) { if (isDisplayingAtLeast(80).matches(view)) { Log.i(TAG, "View is already displayed. Returning."); return; } Rect rect = new Rect(); view.getDrawingRect(rect); if (!view.requestRectangleOnScreen(rect, true /* immediate */)) { Log.w(TAG, "Scrolling to view was requested, but none of the parents scrolled."); } uiController.loopMainThreadUntilIdle(); if (!isDisplayingAtLeast(80).matches(view)) { throw new PerformException.Builder() .withActionDescription(this.getDescription()) .withViewDescription(HumanReadables.describe(view)) .withCause(new RuntimeException( "Scrolling to view was attempted, but the view is not displayed")) .build(); } } public static ViewAction betterScrollTo() { return ViewActions.actionWithAssertions(new ScrollToAction()); } @Override public String getDescription() { return "scroll to"; }} 

La clase ScrollToAction hecha a la medida existe porque el método scrollTo normal está codificado en modo duro para ScrollView y HorizontalScrollView, pero no NestedScrollView.

Este es el archivo XML que intento probar:

  <?xml version="1.0" encoding="utf-8"?> <android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/scrollView" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior"> <RelativeLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal"> <FrameLayout android:id="@+id/fl" android:background="#FBFBFB" android:layout_margin="0dp" android:layout_width="match_parent" android:layout_height="350dp"> <android.support.v4.view.ViewPager android:id="@+id/container" android:layout_width="match_parent" android:layout_height="wrap_content" app:layout_behavior="@string/appbar_scrolling_view_behavior" /> <ImageView android:id="@+id/location" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="@dimen/text_margin" android:layout_gravity="left|top" android:background="@null" android:src="@drawable/ic_location_white" android:paddingLeft="-8dp" /> <TextView android:id="@+id/textViewDistance" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_toRightOf="@id/location" android:textAppearance="?android:attr/textAppearanceMedium" android:layout_margin="@dimen/text_margin" android:layout_gravity="left|top" android:shadowColor="#262424" android:shadowDx="1" android:shadowDy="1" android:shadowRadius="2" android:textColor="#FBFBFB" android:textSize="22dp" android:singleLine="false" android:paddingLeft="24dp" /> <TextView android:id="@+id/textViewPrice" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceMedium" android:layout_margin="@dimen/text_margin" android:layout_gravity="right|top" android:shadowColor="#262424" android:shadowDx="1" android:shadowDy="1" android:shadowRadius="2" android:textColor="#FBFBFB" android:textSize="22dp"/> <me.relex.circleindicator.CircleIndicator android:id="@+id/indicator" android:layout_width="match_parent" android:layout_height="40dp" android:layout_gravity="bottom" android:shadowColor="#262424" android:shadowDx="1" android:shadowDy="1" android:shadowRadius="1"/> </FrameLayout> <LinearLayout android:layout_below="@id/fl" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:id="@+id/textViewTitle" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="left" android:layout_margin="@dimen/text_margin" android:textColor="@color/colorCheckTomBlack" android:textStyle="bold" android:textSize="20dp" /> <TextView android:id="@+id/textViewDescription" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="@dimen/text_margin" android:layout_marginRight="@dimen/text_margin" android:gravity="left" android:textColor="@color/colorCheckTomBlack" android:textSize="18dp" android:layout_weight="0.56" /> <RelativeLayout android:layout_width="match_parent" android:layout_height="65dp" android:paddingTop="30dp"> <ImageButton android:id="@+id/buttonWatchlist" android:src="@drawable/ic_checktom" android:background="@null" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="left" android:layout_marginLeft="55dp" android:layout_marginStart="55dp" android:layout_alignParentTop="true" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:onClick="launchWatchlistActivity" android:paddingTop="2dp"/> <ImageButton android:id="@+id/buttonMessage" android:src="@drawable/ic_messages" android:background="@null" android:scaleX="1.2" android:scaleY="1.2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:onClick="launchMessageActivity" android:paddingTop="7dp"/> <ImageButton android:id="@+id/buttonShare" android:src="@drawable/ic_share" android:background="@null" android:scaleX="1.5" android:scaleY="1.5" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="54dp" android:layout_marginEnd="54dp" android:layout_alignParentTop="true" android:layout_alignParentRight="true" android:layout_alignParentEnd="true" android:onClick="launchShareActivity"/> </RelativeLayout> <RelativeLayout android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="2dp"> <TextView android:id="@+id/textViewWatchlist" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Watchlist" android:layout_marginLeft="41dp" android:layout_marginStart="41dp" android:layout_alignParentTop="true" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" /> <TextView android:id="@+id/textViewMessage" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Message" android:layout_gravity="center_horizontal" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" /> <TextView android:id="@+id/textViewShare" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Share" android:layout_gravity="center_horizontal" android:layout_alignParentTop="true" android:layout_alignParentRight="true" android:layout_alignParentEnd="true" android:layout_marginRight="52dp" android:layout_marginEnd="52dp" /> </RelativeLayout> <LinearLayout android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="_________________________________________" android:paddingTop="25dp"/> </LinearLayout> <LinearLayout android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center"> <de.hdodenhof.circleimageview.CircleImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/imageView" android:layout_centerHorizontal="true" android:id="@+id/circleView" android:scaleX="0.4" android:scaleY="0.4" android:layout_marginTop="-20dp" android:layout_marginBottom="-60dp" /> </LinearLayout> <LinearLayout android:orientation="vertical" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center"> <LinearLayout android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center"> <TextView android:id="@+id/textViewSellerName" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="18dp"/> </LinearLayout> <LinearLayout android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center"> <TextView android:id="@+id/textViewSellerDestination" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingBottom="20dp" /> <TextView android:id="@+id/end_of_details" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout> </LinearLayout> </LinearLayout> </RelativeLayout> </android.support.v4.widget.NestedScrollView> 

Cuando la prueba falla, ésta es la salida completa que consigo:

android.support.test.espresso.PerformException: Error al ejecutar 'desplazarse a' en vista 'con id: com.checktom.checktom: id / end_of_details'. en android.support.test.espresso.PerformException $ Builder.build (PerformException.java:83) en android.support.test.espresso.base.DefaultFailureHandler.getUserFriendlyError (DefaultFailureHandler.java:80) en android.support.test.espresso .base.DefaultFailureHandler.handle (DefaultFailureHandler.java:56) en android.support.test.espresso.ViewInteraction.runSynchronouslyOnUiThread (ViewInteraction.java:184) en android.support.test.espresso.ViewInteraction.doPerform (ViewInteraction.java:115 ) en android.support.test.espresso.ViewInteraction.perform (ViewInteraction.java:87) en com.checktom.checktom.ApplicationTest.testScrollDownAbilityOfDetailsScrollView (ApplicationTest.java:279) en java.lang.reflect.Method.invoke (Método nativo ) en java.lang.reflect.Method.invoke (Method.java:372) en org.junit.runners.model.FrameworkMethod $ 1.runReflectiveCall (FrameworkMethod.java:50) en org.junit.internal.runners.model.ReflectiveCallable .run (ReflectiveCallable.java:12) en org.junit.runners.model.FrameworkMethod.inv okeExplosively (FrameworkMethod.java:47) en org.junit.internal.runners.statements.InvokeMethod.evaluate (InvokeMethod.java:17) en org.junit.internal.runners.statements.RunBefores.evaluate (RunBefores.java:26) en android.support.test.internal.statement.UiThreadStatement.evaluate (UiThreadStatement.java:55) en android.support.test.rule.ActivityTestRule $ ActivityStatement.evaluate (ActivityTestRule.java:270) en org.junit.rules.RunRules .evaluate (RunRules.java:20) en org.junit.runners.ParentRunner.runLeaf (ParentRunner.java:325) en org.junit.runners.BlockJUnit4ClassRunner.runChild (BlockJUnit4ClassRunner.java:78) en org.junit.runners. BlockJUnit4ClassRunner.runChild (BlockJUnit4ClassRunner.java:57) en org.junit.runners.ParentRunner $ 3.run (ParentRunner.java:290) en org.junit.runners.ParentRunner $ 1.schedule (ParentRunner.java:71) en org.junit .runners.ParentRunner.runChildren (ParentRunner.java:288) en org.junit.runners.ParentRunner.access $ 000 (ParentRunner.java:58) en org.junit.runners.ParentRunner $ 2.evalu come (ParentRunner.java:268) en org.junit.runners.ParentRunner.run (ParentRunner.java:363) en org.junit.runners.Suite.runChild (Suite.java:128) en org.junit.runners.Suite .runChild (Suite.java:27) en org.junit.runners.ParentRunner $ 3.run (ParentRunner.java:290) en org.junit.runners.ParentRunner $ 1.schedule (ParentRunner.java:71) en org.junit. runners.ParentRunner.runChildren (ParentRunner.java:288) en org.junit.runners.ParentRunner.access $ 000 (ParentRunner.java:58) en org.junit.runners.ParentRunner $ 2.evaluate (ParentRunner.java:268) en org .junit.runners.ParentRunner.run (ParentRunner.java:363) en org.junit.runner.JUnitCore.run (JUnitCore.java:137) en org.junit.runner.JUnitCore.run (JUnitCore.java:115) en android.support.test.internal.runner.TestExecutor.execute (TestExecutor.java:59) en android.support.test.runner.AndroidJUnitRunner.onStart (AndroidJUnitRunner.java:262) en android.app.Instrumentation $ InstrumentationThread.run Instrumentation.java:1933) Causado por: java.lang.RuntimeException: Desplazamiento a se intentó ver, pero la vista no se muestra en com.checktom.checktom.ScrollToAction.perform (ScrollToAction.java:52) en android.support.test.espresso.ViewInteraction $ 1.run (ViewInteraction.java:144) en java. util.concurrent.Executors $ RunnableAdapter.call (Executors.java:422) en java.util.concurrent.FutureTask.run (FutureTask.java:237) en android.os.Handler.handleCallback (Handler.java:739) en android .os.Handler.dispatchMessage (Handler.java:95) en android.os.Looper.loop (Looper.java:145) en android.app.ActivityThread.main (ActivityThread.java:6938) en java.lang.reflect. Method.invoke (Método nativo) en java.lang.reflect.Method.invoke (Method.java:372) en com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:1404) en com.android. internal.os.ZygoteInit.main (ZygoteInit.java:1199) Las pruebas se completaron.

Puedo decir que me ejecute en la excepción de tiempo de ejecución en el método de rendimiento de mi clase ScrollToAction, pero todavía tengo que encontrar una manera de resolverlo.

En el primer post que enlazé, el nuevo método BetterScrollTo parecía funcionar como un encanto.

One Solution collect form web for “Prueba Espresso NestedScrollView – "Error al ejecutar 'desplazamiento a' en vista 'con id:"”

Puede utilizar el nuevo grabador de prueba Espresso para obtener el código de desplazamiento anidado para – echa un vistazo a Espresso Test Recorder

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.