Espresso allows us to create our own custom matcher and according to me it is really useful for automation. I use many custom matchers once I learn how to use it as it gives me flexibility in automating different functionality.
Video Tutorial -
2. Matching logic is to match the subset of TextView with only error messages.
I hope this post helps you find your code coverage for your test suit :)
Please Share your feedback in comments section below and follow QA Automated to get latest post update.Happy Testing :-)
Video Tutorial -
Testing Scenario- >
You want to test a Simple login screen and check if negative input or no input is given then it displays Error Message as shown in figure.
Espresso Custom Matcher Example |
The effective way of testing this is using custome matcher. Let us see how to create a custom matcher
1. Create a class name ErrorMatcher inside androidTest folder with below code
public class ErrorMatcher { @NonNull public static Matcher<View> withError(final Matcher<String> stringMatcher) { return new BoundedMatcher<View, TextView>(TextView.class) { @Override public void describeTo(final Description description) { description.appendText("error text: "); stringMatcher.describeTo(description); } @Override public boolean matchesSafely(final TextView textView) { return stringMatcher.matches(textView.getError().toString()); } }; } }
2. Matching logic is to match the subset of TextView with only error messages.
3. describeTo method is for debug output.
4. Then you can use your custom matcher in the test case as shown below
@Test public void testLoginMandatory() { onView(withId(R.id.email_sign_in_button)).perform(click()); onView(ErrorMatcher.withError(Matchers. containsString("The field is required"))).check(matches(isDisplayed())); }
I hope this post helps you find your code coverage for your test suit :)
Please Share your feedback in comments section below and follow QA Automated to get latest post update.Happy Testing :-)
Please share github link
ReplyDeleteHi, your are doing wonderful sharing.
ReplyDeletePlease share your GitHub link if possible. it will save us lot of time and life.
thanks
Mak
Hi Anuja,
ReplyDeleteYour tutorials are very helpful and it really adds lot of informative techniques along with learning new tools.
Can you please share the GitHub link for the project demonstrated in this video.
Thanks,
Parth Shah