Theo
Theo

Reputation: 3139

Espresso can't find a view: NoMatchingViewException

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.

Upvotes: 5

Views: 14063

Answers (1)

piotrek1543
piotrek1543

Reputation: 19351

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

Upvotes: 8

Related Questions