Тест пользовательского интерфейса, чтобы подтвердить, что нажатие на элемент меню на панели инструментов обновляет RecyclerView - PullRequest
0 голосов
/ 12 марта 2019

Я новичок в тестировании пользовательского интерфейса с помощью Espresso.Мне нужен пример теста для проверки того, что, если я нажимаю пункт меню на панели инструментов, он обновляет Recyclerview или нет.

Я написал до выполнения щелчка по меню панели инструментов, но не могу найти, как проверить, обновлено ли Recyclerview или нет

    import org.junit.Rule;
    import org.junit.Test;

    import androidx.test.rule.ActivityTestRule;

    import static androidx.test.espresso.Espresso.onView;
    import static androidx.test.espresso.action.ViewActions.click;
    import static androidx.test.espresso.assertion.ViewAssertions.matches;
    import static androidx.test.espresso.matcher.ViewMatchers.withId;
    import static androidx.test.espresso.matcher.ViewMatchers.withText;

    public class MainActivityTest {

    @Rule
    public ActivityTestRule<MainActivity> mActivityTestRule =
            new ActivityTestRule<>(MainActivity.class);

    private IdlingResource mIdlingResource;

    @Before
    public void registerIdlingResource() {
    mIdlingResource = mActivityTestRule.getActivity().getIdlingResource();
    Espresso.registerIdlingResources(mIdlingResource);
    }

    @Test
    public void clickFilterBUtton_UpdatesRecyclerview() {

    int adapterSizeBeforeUpdate, adapterSizeAfterUpdate;

    adapterSizeBeforeUpdate = getRVcount();

    onView((withId(R.id.action_filter)))
            .perform(click());

    adapterSizeAfterUpdate= getRVcount();

    Assert.assertTrue(adapterSizeBeforeUpdate!=adapterSizeAfterUpdate);

    }

    @After
    public void unregisterIdlingResource() {
        if (mIdlingResource != null) {
            Espresso.unregisterIdlingResources(mIdlingResource);
        }
    }

    private int getRVcount(){
        GridView gridView = (GridView) 
mActivityTestRule.getActivity().findViewById(R.id.tea_grid_view);
        return gridView.getAdapter().getCount();
    }

}

1 Ответ

2 голосов
/ 12 марта 2019

Вы можете проверить размер адаптера recyclerView до щелчка и после щелчка, как показано ниже:

    import org.junit.Rule;
        import org.junit.Test;

        import androidx.test.rule.ActivityTestRule;

        import static androidx.test.espresso.Espresso.onView;
        import static androidx.test.espresso.action.ViewActions.click;
        import static androidx.test.espresso.assertion.ViewAssertions.matches;
        import static androidx.test.espresso.matcher.ViewMatchers.withId;
        import static androidx.test.espresso.matcher.ViewMatchers.withText;

        public class MainActivityTest {

        @Rule
        public ActivityTestRule<MainActivity> mActivityTestRule =
                new ActivityTestRule<>(MainActivity.class);


        @Test
        public void clickFilterBUtton_UpdatesRecyclerview() {

           int adapterSizeBeforeUpdate, adapterSizeAfterUpdate;
           adapterSizeBeforeUpdate= getRVcount();
           onView((withId(R.id.action_filter))).check(matches(withText("Show Favorites")));

           onView((withId(R.id.action_filter)))
                    .perform(click());
           adapterSizeAfterUpdate= getRVcount();
           Assert.assertEquals(adapterSizeBeforeUpdate, adapterSizeAfterUpdate);
        }



        private int getRVcount(){
           RecyclerView recyclerView = (RecyclerView) mActivityTestRule.getActivity().findViewById(R.id.your_recycler_view);
           return recyclerView.getAdapter().getItemCount();
    }


}
...