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 for android:id
  • withText() is matcher forandroid:text

Hope it will help

Share:
11,485
Theo
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, 2022

Comments

  • Theo
    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.