Issue
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.
Solution
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
Answered By - piotrek1543
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.