Эспрессо: получить текстовое значение из текстового представления и сохранить в строке? - PullRequest
0 голосов
/ 12 ноября 2018

Я хотел утвердить часть «текста», полученного из textview, а затем сохранить его в виде строки, но не уверен, как я это сделаю.

Ниже приведен фрагмент кода дляссылка:

private void validateFlightOverviewWidgetDate(int resId, String value, boolean outBound) throws Throwable {
    if (ProductFlavorFeatureConfiguration.getInstance().getDefaultPOS() == PointOfSaleId.UNITED_STATES) {
        onView(allOf(outBound ? isDescendantOfA(withId(R.id.package_outbound_flight_widget))
                : isDescendantOfA(withId(R.id.package_inbound_flight_widget)),
            withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE),
            withId(resId)))
            .check(matches(withText(containsString("Dec 22 "))));

Я хочу сохранить значение «22 декабря» в строке, чтобы позже я мог использовать его для утверждения.

1 Ответ

0 голосов
/ 13 ноября 2018

Возможно, вам придется создать пользовательский 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, если только идентификатор не является уникальным.

...