Использование onData с эспрессо

Я пытаюсь получить доступ к дочернему представлению представления. Это линия, которую я сейчас пытаюсь заставить работать.

onData(withDesc("Description")).onChildView(withId(R.id.positive)).perform(click());

private static Matcher<Object> withDesc(String desc) {
    return onView(withContentDescription(desc));
}

Но это возвращает ViewInteraction, а не Object. Как мне переключить это, чтобы оно работало?


person Chad Bingham    schedule 30.12.2013    source источник


Ответы (2)


Я бы предложил найти способ сопоставить нужные элементы представления, которые вы хотите загрузить, с помощью одного из сопоставителей Hamcrest. Посмотрите на доступные сопоставители здесь: https://code.google.com/p/hamcrest/wiki/Tutorial

person Amokrane Chentir    schedule 30.12.2013
comment
Не поймите меня неправильно, я согласен. Но как именно я это сделаю? Я читаю эти уроки и все еще борюсь. - person Chad Bingham; 31.12.2013
comment
Насколько я понимаю, вы можете использовать только стоимость вашего предмета в качестве критерия соответствия (что имеет смысл). Например: allOf(is(экземпляр(String.class)), equ(какое-то значение)). Не уверен насчет синтаксиса, пытаюсь помочь с крошечного экрана в поезде. - person Amokrane Chentir; 31.12.2013
comment
Когда я пытаюсь использовать сопоставитель Hamcrest в этом контексте, я получаю серьезные синтаксические ошибки. Что не так? - person Chad Bingham; 31.12.2013
comment
Извините за синтаксис. Это правильно: allOf(is(instanceOf(String.class)), is(Americano))) - person Amokrane Chentir; 31.12.2013
comment
И не забудьте сделать необходимые статические импорты для allOf, is, instanceOf - person Amokrane Chentir; 31.12.2013
comment
Попробуйте импортировать статический org.hamcrest.Matchers.*; - person Amokrane Chentir; 31.12.2013
comment
Ну, это заставило onData работать, но я думаю, мне нужно перефразировать свой вопрос сейчас, потому что я не получаю onChildView - person Chad Bingham; 31.12.2013
comment
Не стесняйтесь смотреть. Может еще поможешь. stackoverflow.com/questions/20848620/onchildview-with-espresso - person Chad Bingham; 31.12.2013
comment
Я постараюсь, как только смогу. - person Amokrane Chentir; 31.12.2013

Это пример использования Google android -тестовый репозиторий

 private static DataInteraction onRow(String str) {
     return onData(hasEntry(equalTo(LongListActivity.ROW_TEXT), is(str)));
 }
person serv-inc    schedule 29.05.2018