44

有没有一种方法可以使用 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()));
4

3 回答 3

99

这对我有用,请尝试。

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)))
于 2015-10-20T19:31:05.730 回答
16

替代

private void checkSnackBarDisplayedByMessage(@StringRes int message) {
    onView(withText(message))
            .check(matches(withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)));
}
于 2016-10-07T11:08:33.107 回答
2

我看到了以前的答案,但我认为这会更好。

@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()));
}
于 2018-02-01T18:28:08.603 回答