Я давно использую свой телефон для запуска инструментированных тестов Android.Сегодня я думал, что переключусь на эмулятор, но обнаружил, что некоторые тесты, которые проходят на моем телефоне, не проходят на эмуляторе - потому что жест смахивания не делает то же самое на эмуляторе, что и на моем телефоне (XperiaZ5 Compact, Android 7.1.1).Я также использую ту же версию Android в эмуляторе.
При запуске на эмуляторе метод ViewActions.swipeLeft (), кажется, запускает свайп слишком далеко вправо и вызывает ту маленькую волнистую анимацию, которая возникает, когдаВы перетаскиваете от самого края экрана в конце ViewPager.Смахивание работает полностью нормально на телефоне и эмуляторе, когда сделано вручную.Следовательно, я думаю, что это должно быть как-то связано с эспрессо.Я могу представить, как, возможно, проблема может заключаться в прослушивателе смахивания в RecyclerView внутри просматриваемого с возможностью считывания просмотра.Но он отлично работает на эмуляторе и телефоне, и тесты проходят на моем телефоне.
Это мой код обработки, который добавляется в RecyclerView на вкладке ViewPager (на последней вкладке).
fun attachSingleSwipeActionToRecyclerView(
direction: Int = ItemTouchHelper.LEFT,
recyclerView: RecyclerView,
swipeAction: RecyclerView.ViewHolder.() -> Unit
): ItemTouchHelper {
val simpleCallback = object : ItemTouchHelper.SimpleCallback(0, direction) {
override fun onMove(
recyclerView: RecyclerView,
viewHolder: RecyclerView.ViewHolder,
target: RecyclerView.ViewHolder
): Boolean {
return false
}
override fun onSwiped(viewHolder: RecyclerView.ViewHolder, direction: Int) {
swipeAction(viewHolder)
}
}
val itemTouchHelper = ItemTouchHelper(simpleCallback)
itemTouchHelper.attachToRecyclerView(recyclerView)
return itemTouchHelper
}
В моем тесте я просто вызываю ViewActions.swipeLeft () для первого элемента RecyclerView на экране.
Я пытался создать свою собственную начальную точку для смазывания эспрессо, даже когда я его сделалначало в самом центре, а не в дальнем правом углу, ничего не изменилось, включая конец волновой анимации ViewPager
GeneralSwipeAction(
Swipe.FAST,
GeneralLocation.CENTER,
GeneralLocation.CENTER_LEFT,
Press.FINGER
)
Что может отличаться в эмуляторе, который приводит к тому, что смахивание эспрессо действует иначе, чем на реальномустройство