Testing Snackbar show with Espresso

℡╲_俬逩灬. 提交于 2019-12-03 11:33:27

问题


Is there a way to test using Espresso that the snackbar shows up with the right text?

I have a simple call to create a snackbar

Snackbar.make(mView, "My text", Snackbar.LENGTH_LONG).show();

I have tried this without luck

onView(withText("My text")).inRoot(withDecorView(not(is(mActivityRule.getActivity().getWindow().getDecorView())))).check(matches(isDisplayed()));

回答1:


This worked for me, please try.

onView(allOf(withId(android.support.design.R.id.snackbar_text), withText("My text")))
            .check(matches(isDisplayed()));

If you use AndroidX, please use the following:

onView(withId(com.google.android.material.R.id.snackbar_text))
        .check(matches(withText(R.string.whatever_is_your_text)))



回答2:


An alternative

private void checkSnackBarDisplayedByMessage(
        @StringRes int message) {
    onView(withText(message))
            .check(matches(withEffectiveVisibility(
                    ViewMatchers.Visibility.VISIBLE
            )));
}



回答3:


I saw the previous answers but I thought this would be better.

@Test
public void onFabClick_shouldDisplaySnackbar() throws Exception {
  onView(withId(R.id.fab)).perform(click());

  // Compare with the text message of snackbar
  onView(withText(R.string.snackbar_message))
      .check(matches(isDisplayed()));
}


来源:https://stackoverflow.com/questions/33111882/testing-snackbar-show-with-espresso

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!