UI测试验证单击工具栏中的菜单项会更新RecyclerView

问题描述 投票:0回答:1

我是使用Espresso进行UI测试的新手。我想要样本测试检查如果我按工具栏中的菜单项它是否更新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();
    }

}
android android-espresso ui-testing
1个回答
2
投票

您可以在点击之前检查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();
    }


}
© www.soinside.com 2019 - 2024. All rights reserved.