web-dev-qa-db-ja.com

Espressoでスナックバーショーをテストする

Espressoを使用してスナックバーに正しいテキストが表示されるかどうかをテストする方法はありますか?

スナックバーを作成する簡単な呼び出しがあります

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

私は運なしでこれを試しました

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

これでうまくいきました。お試しください。

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

AndroidXを使用している場合は、以下を使用してください。

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

代替

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

私は以前の答えを見ましたが、これがより良いと思いました。

@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()));
}
2
Rizwan