Я использую Espresso для тестирования представления списка, которое появляется, когда я ищу элемент (например, автозаполнение). Представление списка не появляется, пока пользователь не введет что-то в SearchView. т. е. я устанавливаю ListView в View.VISIBLE
только тогда, когда пользователь ввел что-то в SearchView
Я получаю эту ошибку, когда пытаюсь щелкнуть текст в представлении списка. android.support.test.espresso.PerformException: Error performing 'load adapter data' on view 'with id:'
. Использование onData не сработало.
Добавление искусственной задержки работает, но я не уверен, что это плохая практика, поскольку кажется, что это противоречит цели таких методов, как onData
и т. д.
Что я пробовал:
Я пытался посмотреть, что делает тестовый рекордер Espresso, но когда я использую код тестового рекордера, я получаю указанную выше ошибку. Я считаю, что это связано с тем, что рекордер вносит некоторую задержку.
Я прочитал эти вопросы StackOverflow, но они не решают мою проблему:
Мой код
Этот код работает, но я бы предпочел не вводить искусственную задержку.
public pickSuggestion(int index){
/** artificial delay to allow list to appear.
This works but I shouldn't have to do this right? **/
SystemClock.sleep(1000);
onData(anything())
.inAdapterView(withId(R.id.list))
.atPosition(index)
.onChildView(withId(R.id.mTextView))
.perform(click());
}