RecyclerViewActions.scrollTo()
與ViewHolder
的ItemView
匹配,其在適配器的onCreateViewHolder()
中膨脹。爲了使scrollTo()
正常工作,您需要提供一個唯一標識ItemView
的匹配器。
您當前的匹配器會告訴espresso滾動到使用TextView
作爲itemView
充氣的ViewHolder。可能會發生這種情況,但通常您需要執行一些ViewGroup
操作,以按照您希望的方式對視圖持有人進行調整。
如果將scrollTo()
匹配器更改爲hasDescendant(withText("Text XYZ"))
以說明所有嵌套佈局(如果存在多個佈局)。
也請記住,因爲你也試圖點擊項目 - 你不能做到這一點在同一個perform()
因爲它會發送點擊當前ViewInteraction
,這是在這種情況下RecyclerView
ID爲R.id.recycler_view
。在同一個表演中這樣做只需單擊RecyclerView
上的中間,而不是滾動到的項目。
要解決此問題,您需要使用另一個onView()
與您用於滾動到某個項目的匹配器或使用RecyclerView.actionOnItem()
。
在另一個onView()
聲明的情況下,hasDescendant(withText("Text XYZ"))
會失敗你,因爲它會發現,TextView的(viewholder,recyclerview,將保存該recyclerview等等的ViewGroup),因爲它們都具有這種特殊的後裔所有的父母。這將迫使你使得匹配器更精確,並考慮所有嵌套佈局。在這種情況下,我通常會選擇匹配器withChild()
,但對您而言可能會有所不同。
似乎不起作用 - 錯誤日誌請 – piotrek1543
您正在檢查在滾動到之前顯示的視圖。 – denys
@denys ckeck用於實際的回收站視圖。它不應該有任何區別,除非實際上沒有顯示recyclerview。 –