单元测试 RecyclerView OnItemTouchListener Robolectric
Unit Testing RecyclerView OnItemTouchListener Robolectric
所以在我的测试中调用它来布局 recyclerview 之后:
recyclerView.addOnItemTouchListener(listener);
recyclerView.measure(0, 0);
recyclerView.layout(0, 0, 100, 10000);
我的 OnItemTouchListener
是:
listener = new RecyclerOnTouchListener(this, new RecyclerOnTouchListener.OnItemClickListener() {
@Override
public void onItemClick(View v, int position) {
Toast.makeText(this, "Sample toast", Toast.LENGTH_SHORT).show();
}
});
我想声明:
Assertions.assertThat(ShadowToast.getTextOfLatestToast()).isEqualToIgnoringCase("Sample Toast");
我需要在 recyclerview 上模拟项目点击。我正在做的是:
recyclerView.findViewHolderForAdapterPosition(0).itemView.performClick();
recyclerView.performClick()
并且它们都 return false,这意味着它们中没有 onclick 侦听器被调用。
那么我们如何在 recyclerview 中真正测试 OnItemTouchListener
?在 Robolectric?
如有任何帮助,我们将不胜感激。谢谢!
我有一个类似的问题,通过在 setAdapter 之前添加行得到解决:
recyclerView.setLayoutManager(LinearLayoutManager(this))
我 运行 遇到了同样的问题,虽然我没有找到任何好的解决方案,但我有一个解决方法,至少可以在我找到更好的方法之前进行测试。
您可以做的一件事是在 activity 中创建一个方法并让 onClick 侦听器直接调用它。
void recyclerOnClick(View view, int position) {
Toast.makeText(this, "Click", Toast.LENGTH_SHORT).show();
}
void addTouchListener() {
RecyclerOnTouchListener touchListener = new RecyclerOnTouchListener(this, recyclerView,
new RecyclerOnTouchListener.OnItemClickListener() {
@Override
public void onClick(@NotNull View view, int position) {
recyclerOnClick(view, position);
}
});
recyclerView.addOnItemTouchListener(touchListener)
}
然后在您的测试中,您只需为要模拟点击的视图调用 adapter.recyclerOnClick()
。
所以在我的测试中调用它来布局 recyclerview 之后:
recyclerView.addOnItemTouchListener(listener);
recyclerView.measure(0, 0);
recyclerView.layout(0, 0, 100, 10000);
我的 OnItemTouchListener
是:
listener = new RecyclerOnTouchListener(this, new RecyclerOnTouchListener.OnItemClickListener() {
@Override
public void onItemClick(View v, int position) {
Toast.makeText(this, "Sample toast", Toast.LENGTH_SHORT).show();
}
});
我想声明:
Assertions.assertThat(ShadowToast.getTextOfLatestToast()).isEqualToIgnoringCase("Sample Toast");
我需要在 recyclerview 上模拟项目点击。我正在做的是:
recyclerView.findViewHolderForAdapterPosition(0).itemView.performClick();
recyclerView.performClick()
并且它们都 return false,这意味着它们中没有 onclick 侦听器被调用。
那么我们如何在 recyclerview 中真正测试 OnItemTouchListener
?在 Robolectric?
如有任何帮助,我们将不胜感激。谢谢!
我有一个类似的问题,通过在 setAdapter 之前添加行得到解决:
recyclerView.setLayoutManager(LinearLayoutManager(this))
我 运行 遇到了同样的问题,虽然我没有找到任何好的解决方案,但我有一个解决方法,至少可以在我找到更好的方法之前进行测试。
您可以做的一件事是在 activity 中创建一个方法并让 onClick 侦听器直接调用它。
void recyclerOnClick(View view, int position) {
Toast.makeText(this, "Click", Toast.LENGTH_SHORT).show();
}
void addTouchListener() {
RecyclerOnTouchListener touchListener = new RecyclerOnTouchListener(this, recyclerView,
new RecyclerOnTouchListener.OnItemClickListener() {
@Override
public void onClick(@NotNull View view, int position) {
recyclerOnClick(view, position);
}
});
recyclerView.addOnItemTouchListener(touchListener)
}
然后在您的测试中,您只需为要模拟点击的视图调用 adapter.recyclerOnClick()
。