Espresso can't find a view: NoMatchingViewException
11,485
Answer
Change:
onView(withText(R.id.user_name)).perform(click());
with
onView(withId(R.id.user_name)).perform(click());
Explanation
withId()
is matcher forandroid:id
withText()
is matcher forandroid:text
Hope it will help
Author by
Theo
Beng Honours Degree in Electical in Electronic Engineering,University of Sussex UK MsC in Electrical Power,University of Newcastle Upon Tyne UK. OCJP SE 6 My github account. Android Projects published on google play Easy News. Easy Movies.
Updated on June 09, 2022Comments
-
Theo almost 2 years
In my app,I have two fragments attached in an activity. Each fragment contains different views.
The first one has two edit text fields and two buttons,where the user can login or register. So now I want to apply some Espresso testing.
@RunWith(AndroidJUnit4.class) public class LoginTest { @Rule public final ActivityRule<MainActivity> main = new ActivityRule<> (MainActivity.class); @Test public void shouldBeAbleToFindViewsOfLoginScreen(){ onView(withText(R.id.user_name)).perform(click()); } }
However the test complains that it can not find the view with the id of R.id.user_name.
android.support.test.espresso.NoMatchingViewException: No views in hierarchy found matching: with string from resource id: <2131493050>[user_name] value: false
I use the corrent id as I checked from the uiautomatorviewer as well.
The xml code for this fragment is
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/fragmentLogin" tools:context="team.football.ael.MainActivity" android:background="@drawable/background"> <include android:id="@+id/toolbar" layout="@layout/tool_lay" /> <LinearLayout android:padding="20dp" android:background="@drawable/roundedlayout" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:layout_width="wrap_content" android:orientation="vertical" android:layout_height="wrap_content"> <ImageView android:src="@mipmap/ael_logo" android:layout_width="60dp" android:layout_height="60dp" android:layout_gravity="center_horizontal" /> <android.support.design.widget.TextInputLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="10dp"> <EditText android:id="@+id/user_name" android:hint="@string/login_username" android:textColor="#fff" android:textColorHint="#fff" android:layout_width="250dp" android:layout_height="wrap_content" /> </android.support.design.widget.TextInputLayout> <android.support.design.widget.TextInputLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="10dp"> <EditText android:id="@+id/user_pass" android:textColorHint="#fff" android:layout_width="250dp" android:layout_height="wrap_content" android:inputType="textPassword" android:layout_marginTop="20dp" android:hint="κωδικός" android:textColor="#fff" /> </android.support.design.widget.TextInputLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <Button android:id="@+id/loginButton" android:layout_gravity="center_horizontal" android:text="Εισοδος" android:layout_marginTop="20dp" android:layout_width="0dp" android:layout_weight="1" android:textColor="#fff" android:background="@drawable/roundbutton" android:layout_height="wrap_content" android:onClick="userLogin"/> <Button android:layout_marginTop="20dp" android:layout_gravity="center_horizontal" android:text="Εγγραφη" android:textColor="#fff" android:layout_width="0dp" android:layout_marginLeft="10dp" android:background="@drawable/roundbutton" android:onClick="userReg" android:layout_weight="1" android:layout_height="wrap_content" /> </LinearLayout> <TextView android:textStyle="bold|italic" android:textSize="25sp" android:layout_gravity="center_horizontal" android:text="Ξέχασες τον κωδικό σου?" android:id="@+id/forgotPass" android:textColor="#fff" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout>
Any ideas?
Thanks.