Возможно, вам придется создать пользовательский ViewAction
, чтобы помочь вам получить текст из TextView
:
public class GetTextAction implements ViewAction {
private CharSequence text;
@Override public Matcher<View> getConstraints() {
return isAssignableFrom(TextView.class);
}
@Override public String getDescription() {
return "get text";
}
@Override public void perform(UiController uiController, View view) {
TextView textView = (TextView) view;
text = textView.getText();
}
@Nullable
public CharSequence getText() {
return text;
}
}
Тогда вы можете получить текст по:
GetTextAction action = new GetTextAction();
onView(allOf(isDescendantOf(...), withId(...), withEffectiveVisibility(...)))
.perform(action);
CharSequence text = action.getText();
Хотя я бы не рекомендовал использовать этот способ для подтверждения теста, он кажется нетрадиционным и неловким . Кроме того, вам не нужно иметь isDescendantOf(...)
в вашей комбинации allOf
из-за withId
, если только идентификатор не является уникальным.