Вопрос:
В моем приложении у меня есть два фрагмента, прикрепленных к активности. Каждый фрагмент содержит разные виды.
Первый имеет два текстовых поля редактирования и две кнопки, в которых пользователь может войти или зарегистрироваться. Итак, теперь я хочу применить некоторые тесты эспрессо.
@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()); } }
Однако тест жалуется, что он не может найти представление с идентификатором 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
Я использую идентификатор corrent, как я также проверил у uiautomatorviewer.
Код xml для этого фрагмента
<?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>
Есть идеи?
Благодарю.
Лучший ответ:
Ответ
Изменить:
onView(withText(R.id.user_name)).perform(click());
с
onView(withId(R.id.user_name)).perform(click());
объяснение
- withId() является совпадением для android:id
- withText() является совпадением для android:text
Надеюсь, это поможет