Espresso используется для автоматического тестирования моего приложения.
Изменить: ниже вы найдете несколько ответов!
Как я могу щелкнуть (в рамках автоматического теста Espresso script) на запись в длинном списке пользовательских объектов?
В документации Espresso есть пример LongList. Работа со списком объектов - это то, что я обычно делаю. Попытка множества вариантов перехода от карты к объекту пока не принесла хороших результатов.
В документации Espresso говорится, что необходимо использовать 'onData'. Итак, что-то вроде:
onData( myObjectHasContent("my_item: 50")).perform(click());
onView(withId( R.id.selection_pos2)).check(matches(withText("50")));
Мои вопросы (и я думаю, что они полезны для сообщества обучения): - Можете ли вы написать для этого хорошего Матчи? - Как мы можем использовать это в 'onData'?
Какая ситуация? На экране у меня есть список объектов вроде:
public class MyOjbect {
public String content;
public int size;
}
Адаптер, который я использую для заполнения заполненного списка:
public class MyObjectWithItemAndSizeAdapter extends ArrayAdapter<MyObjectWithItemAndSize> {
private final Context context;
private final List<MyObjectWithItemAndSize> values;
...
@Override
public View getView(int position, View concertView, ViewGroup parent) {
View view = null;
if (concertView != null) {
view = (LinearLayout) concertView;
} else {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate( R.layout.list_item, parent, false);
}
TextView itemT = (TextView) view.findViewById( R.id.item_content);
itemT.setText( values.get(position).item);
TextView sizeT = (TextView) view.findViewById( R.id.item_size);
sizeT.setText( "" + values.get(position).size);
return view;
}
}