2016-08-29 43 views
8

Chcę przetestować, czy pole EditText zawiera błąd (ustawiony za pomocą editText.setError ("Can not be blank!")).Testowanie błędów EditText z Espresso na Androidzie

EditText field with error

Utworzyliśmy przypadek testowy espresso z nowym AndroidStudio 2,2 funkcji, aby nagrać testy espresso. Kod jest więc generowany automatycznie. Ale na razie sprawdza tylko, czy wyświetlany jest editText.

@RunWith(AndroidJUnit4.class) 
public class CreateNoteActivityTitleCannotBeBlank { 

    @Rule 
    public ActivityTestRule<CreateNoteActivity> mActivityTestRule = new ActivityTestRule<>(CreateNoteActivity.class); 

    @Test 
    public void createNoteActivityTitleCannotBeBlank() { 
     ViewInteraction floatingActionButton = onView(
       allOf(withId(R.id.fab_add_note), 
         withParent(allOf(withId(R.id.activity_create_note), 
           withParent(withId(android.R.id.content)))), 
         isDisplayed())); 
     floatingActionButton.perform(click()); 

     ViewInteraction editText = onView(
       allOf(withId(R.id.tiet_note_title), 
         childAtPosition(
           childAtPosition(
             withId(R.id.til_title), 
             0), 
           0), 
         isDisplayed())); 
     editText.check(matches(isDisplayed())); 

    } 

    private static Matcher<View> childAtPosition(
      final Matcher<View> parentMatcher, final int position) { 

     return new TypeSafeMatcher<View>() { 
      @Override 
      public void describeTo(Description description) { 
       description.appendText("Child at position " + position + " in parent "); 
       parentMatcher.describeTo(description); 
      } 

      @Override 
      public boolean matchesSafely(View view) { 
       ViewParent parent = view.getParent(); 
       return parent instanceof ViewGroup && parentMatcher.matches(parent) 
         && view.equals(((ViewGroup) parent).getChildAt(position)); 
      } 
     }; 
    } 
} 

Czy istnieje sposób sprawdzenia, czy błąd jest wyświetlany?

+0

spróbować dodać dopiskiem @Nullable – Genehme

+0

Możliwa duplikat [Android espresso. Jak sprawdzić ErrorText w TextInputLayout] (http://stackoverflow.com/questions/34285782/androidroid-how-how-to-check-errortext-in-textinputlayout) –

Odpowiedz

17

zmienić editText.check(matches(isDisplayed())); do editText.check(matches(hasErrorText("Cannot be blank!")));

+0

To wszystko! :) Dziękuję Ci. Sprawdziłem tylko [Cheat Sheet] (https://google.github.io/android-testing-support-library/docs/espresso/cheatsheet/), ale brakuje niektórych metod. –