我需要编写一个测试来点击我的RecyclerView中的第一项。在某些情况下,RecyclerView可能为空,因此如果我点击索引为0
的位置,它将失败。如何编写这样的测试?首先检查recyclerView
是否非空,然后再单击特定位置?
我需要编写一个测试来点击我的RecyclerView中的第一项。在某些情况下,RecyclerView可能为空,因此如果我点击索引为0
的位置,它将失败。如何编写这样的测试?首先检查recyclerView
是否非空,然后再单击特定位置?
问题和评论有一些不同的场景。
让我们实现下一个测试场景:如果回收站没有包含任何内容,则不执行任何操作。如果回收站至少有一个元素,点击第一个元素。
@Rule
public final ActivityTestRule<YourActivity> mActivityRule = new ActivityTestRule<>(YourActivity.class);
@Test
public void testSample(){
if (getRVcount() > 0){
onView(withId(R.id.our_recycler_view)).perform(RecyclerViewActions.actionOnItemAtPosition(0, click()));
}
}
private int getRVcount(){
RecyclerView recyclerView = (RecyclerView) mActivityRule.getActivity().findViewById(R.id.our_recycler_view);
return recyclerView.getAdapter().getItemCount();
}
针对你的情况,我认为最好使用check方法进行检查。以下是一个示例。
@Test
fun mainActivityTest() {
val yourRecycler = onView(
allOf(
childAtPosition(
withClassName(`is`("androidx.constraintlayout.widget.ConstraintLayout")),
0
),
instanceOf(RecyclerView::class.java)
)
)
yourRecycler.check { view, noViewFoundException ->
noViewFoundException?.apply {
throw this
}
assertTrue(view is RecyclerView &&
view.adapter != null && view.adapter?.itemCount?:-1 > 0
)
}
}