Ошибка при выполнении «android.support.test.espresso.contrib.RecyclerViewActions $ ActionOnItemAtPositionViewAction» для представления с идентификатором - PullRequest
0 голосов
/ 20 декабря 2018

Есть ли возможность:

- отключить все анимации для представления переработчика или запустить их в потоке пользовательского интерфейса для тестирования с помощью эспрессо?

Или

- чтобы добавить ресурсы холостого хода в android.support.v7.recyclerview.extensions.ListAdapter?

Проблема заключается в следующем:исключение для теста эспрессоXXX: id / items_rcv '.

При попытке выполнить следующий код:

//... code that executes recyclerView.adapter.submitList(items)
onView(withId(R.id.items_rcv))
            .perform(RecyclerViewActions.actionOnItemAtPosition<ViewHolder>(
                0, click()
            ));

Проблема заключается в том, что элементы не отображаются при выполнении действия щелчка.Они показываются с некоторой задержкой, потому что адаптер для RecyclerView расширен с android.support.v7.recyclerview.extensions.ListAdapter :

class ItemsAdapter : ListAdapter<Item, RecyclerView.ViewHolder>() {
...
}

, поэтому он использует AsyncListDiffer, который показывает элементы в рециркуляторепросмотр с некоторой анимацией.

Заранее спасибо

ОБНОВЛЕНИЕ:

Следующее не помогает: 1) установить BackgroundThreadExecutor в качестве MainThreadExecutor для AsyncListDiffer

ItemsAdapter(AsyncDifferConfig.Builder<Item>(ItemsDiffCallback)
                    .setBackgroundThreadExecutor(MainThreadExecutor())
                    .build())

2) отключить itemAnimator для RecyclerView

mActivityTestRule.activity.findViewById<RecyclerView>(R.id.items_rcv).itemAnimator = null

1 Ответ

0 голосов
/ 20 декабря 2018

Вы можете создать CountingIdlingResource и приращение перед заполнением списка и декремента после того, как все это будет сделано.

Просто не забудьте зарегистрировать IdlingResource на @Before и @After, вот так

IdlingRegistry.getInstance().register(rule.getIdlingResource()); //before
IdlingRegistry.getInstance().unregister(rule.getIdlingResource()); //after
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...