因此,在我的测试中调用它来布局recyclerview:
HtmlHelper
和我的import { Toolbar, Data } from 'react-data-grid/addons';
const Selectors = Data.Selectors;
:
recyclerView.addOnItemTouchListener(listener);
recyclerView.measure(0, 0);
recyclerView.layout(0, 0, 100, 10000);
我想断言:
OnItemTouchListener
我需要在recyclerview上模拟项目点击。而我正在做的是:
listener = new RecyclerOnTouchListener(this, new RecyclerOnTouchListener.OnItemClickListener() {
@Override
public void onItemClick(View v, int position) {
Toast.makeText(this, "Sample toast", Toast.LENGTH_SHORT).show();
}
});
并且它们都返回false,意味着没有调用onclick监听器。
那么我们如何在recyclerview中真正测试Assertions.assertThat(ShadowToast.getTextOfLatestToast()).isEqualToIgnoringCase("Sample Toast");
?在Robolectric?
任何帮助将不胜感激。谢谢!
答案 0 :(得分:1)
我有一个类似的问题,通过在setAdapter之前添加行来修复:
recyclerView.setLayoutManager(LinearLayoutManager(this))
答案 1 :(得分:0)
我遇到了同样的问题,虽然我没有找到任何解决问题的好方法,但我有一个解决方法,至少可以让测试成为可能,直到找到更好的东西。
您可以做的一件事是在您的活动中创建一个方法,并直接调用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()
。