I have a PinCodeView that extends LinearLayout. I have following code in my init() method. DigitEditText extends Ed
I solved my problem with this trick. Hope it saves some times for you.
First I used Id rather than tag.
for (int i = 0; i < 4; i++)
{
DigitEditText digitView = getDigitInput();
digitView.setId(R.id.etPinCodeView + i); // uses for Espresso testing
digitView.setKeyEventCallback(this);
...
And this is test for it:
onView(withId(R.id.etPinCodeView + 0)).perform(typeText("2"));
onView(withId(R.id.etPinCodeView + 1)).perform(typeText("0"));
onView(withId(R.id.etPinCodeView + 2)).perform(typeText("1"));
onView(withId(R.id.etPinCodeView + 3)).perform(typeText("6"));
Since withTagValue needs an instance of org.hamcrest.Matcher as an argument, we can create a simple one using the Matcher.is method
to find views with a certain tag in your expresso test:
String tagValue = "lorem impsum";
ViewInteraction viewWithTagVI = onView(withTagValue(is((Object) tagValue)));