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