Узнайте, в какой линии эспрессо терпит неудачу точно - PullRequest
0 голосов
/ 21 февраля 2019

Я запускаю тесты эспрессо в моем приложении для Android.Если не получается, распечатывается дерево представлений.К сожалению, я не знаю, в какой строке этот сбой происходит точно.

Есть ли способ заставить Espresso печатать трассировку стека при возникновении исключения (например, NoMatchingViewException), чтобы я мог видеть в какой строке мои тестыпотерпит неудачу?

Спасибо, Томас

РЕДАКТИРОВАТЬ:

Вывод, который я получаю выглядит (удаленная часть в середине):

android.support.test.espresso.AmbiguousViewMatcherException: 'with id: com.wombatl.mobility.charge.test:id/stopChargingButton' matches multiple views in the hierarchy.
Problem views are marked with '****MATCHES****' below.
View Hierarchy:
+>DecorView{id=-1, visibility=VISIBLE, width=1080, height=2160, has-focus=true, has-focusable=true, has-window-focus=true, is-clickable=false, is-enabled=true, is-focused=false, is-focusable=false, is-layout-requested=false, is-selected=false, layout-params=WM.LayoutParams{(0,0)(fillxfill) ty=1 fl=#81810100 pfl=0x20000 wanim=0x10302f6 needsMenuKey=2 colorMode=0}, tag=null, root-is-layout-requested=false, has-input-connection=false, x=0.0, y=0.0, child-count=3}
|
+->LinearLayout{id=-1, visibility=VISIBLE, width=1080, height=2034, has-focus=true, has-focusable=true, has-window-focus=true, is-clickable=false, is-enabled=true, is-focused=false, is-focusable=false, is-layout-requested=false, is-selected=false, layout-params=android.widget.FrameLayout$LayoutParams@48dbdb, tag=null, root-is-layout-requested=false, has-input-connection=false, x=0.0, y=0.0, child-count=2}
|

(...)

|
+--------------->AppCompatTextView{id=2131361990, res-name=hoursTextView, visibility=VISIBLE, width=68, height=53, has-focus=false, has-focusable=false, has-window-focus=true, is-clickable=false, is-enabled=true, is-focused=false, is-focusable=false, is-layout-requested=false, is-selected=false, layout-params=android.widget.Rela

Ответы [ 2 ]

0 голосов
/ 10 июля 2019

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

0 голосов
/ 13 марта 2019

Четко указано, что у вас есть несколько совпадений для представления с идентификатором stopChargingButton.Вот и все.

android.support.test.espresso.AmbiguousViewMatcherException: 'with id: com.wombatl.mobility.charge.test:id/stopChargingButton' matches multiple views in the hierarchy.

Сопоставители представлений должны соответствовать только одному элементу, в противном случае Espresso не знает, с каким видом работать, и выдает исключение.Добавьте дополнительные критерии соответствия для определения конкретного вида на экране.Вы можете использовать allOf() Hamcrest Matcher для этой цели.

Если представление, над которым вы хотите работать, является частью ListView - используйте onData().Если он находится внутри RecyclerView, посмотрите в документации, как работать с элементом, который является частью RecyclerView.

...