I'm testinig code I've written for android, I'm using JUnit4 and android.support.test.espresso.Espresso.*
.
It happens if I call twice onview
on a previous called android object like an EditText
, TexView
, Button
or else, I get an exception, I don't know if I'm missing something or it is a bug, how to fix that?
onView(withId(R.id.name))
.perform(typeText(NAME), closeSoftKeyboard());
onView(withId(R.id.surname))
.perform(typeText(SURNAME), closeSoftKeyboard());
onView(withId(R.id.name))
.perform(replaceText(NAME), closeSoftKeyboard());
Error log:
android.support.test.espresso.PerformException: Error performing 'replace text' on view 'with id: com.myapp:id/name'.
at android.support.test.espresso.PerformException$Builder.build(PerformExceptio
n.java:84)
at android.support.test.espresso.base.DefaultFailureHandler.getUserFriendlyError(DefaultFailureHandler.java:81)
at android.support.test.espresso.base.DefaultFailureHandler.handle(DefaultFailureHandler.java:52)
at android.support.test.espresso.ViewInteraction.waitForAndHandleInteractionResults(ViewInteraction.java:312)
at android.support.test.espresso.ViewInteraction.desugaredPerform(ViewInteraction.java:167)
at android.support.test.espresso.ViewInteraction.perform(ViewInteraction.java:110)
at com...
Caused by: java.lang.RuntimeException: Action will not be performed because the target view does not match one or more of the following constraints:
(is displayed on the screen to the user and is assignable from class: class android.widget.EditText)
Layout xml:
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="68dp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent">
<GridLayout
android:id="@+id/gridLayout1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:columnCount="2"
android:orientation="horizontal"
android:rowCount="9">
<TextView
android:id="@+id/nameLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/nomeLabel" />
<EditText
android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textPersonName" />
<TextView
android:id="@+id/surnameLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/cognomeLabelVal" />
<EditText
android:id="@+id/surname"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textPersonName" />
<Button
android:id="@+id/saveId"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:enabled="false"
android:onClick="save"
android:text="@string/saveName" />
</GridLayout>
</ScrollView>