簡體   English   中英

RecyclerView濃咖啡測試click()不起作用

[英]RecyclerView espresso test click() not working

我面臨着奇怪的意式咖啡機測試行為。 單擊“回收者視圖”的項目不起作用。

點擊這里沒有發生

onView(withId(R.id.recyclerView)).perform(actionOnItemAtPosition(0, click()));

但是,此解決方法有效

onView(withId(R.id.recyclerView)).perform(actionOnItemAtPosition(0, recyclerClick()));

// ...

public static ViewAction recyclerClick() {
    return new ViewAction() {

        @Override
        public Matcher<View> getConstraints() {
            return any(View.class);
        }

        @Override
        public String getDescription() {
            return "performing click() on recycler view item";
        }

        @Override
        public void perform(UiController uiController, View view) {
            view.performClick();
        }
    };
}

這是Espresso或RecyclerView問題嗎?

應該與RecyclerView無關。 Espresso對其ViewActions.click()實現進行的操作是將MotionEvent發送到目標視圖的中心。 確保沒有孩子攔截它。

您可以使用RecyclerViewActions

只需使用:

onView(withId(R.id.recyclerView)).perform(
            RecyclerViewActions.actionOnItemAtPosition(0, click()));

例如:

@RunWith(AndroidJUnit4.class)
public class MainActivityTest {
  @Rule
  public ActivityTestRule<MainActivity> activityRule = new ActivityTestRule<>(MainActivity.class);

  @Test
  public void clickItem() {
    onView(withId(R.id.recycler_view))
        .perform(RecyclerViewActions.actionOnItemAtPosition(o, click()));

    onView(withId(R.id.text))
        .check(matches(withText("XX")))
        .check(matches(isDisplayed()));
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM