由于接口的显式强制转错,我遇到单元测试失败的问题。我不确定是否有解决方案,但我还没有找到一个足够明确的解决方案。
在我的构造函数中,我传入了数据模型的通用接口。然后我明确地将Idatamodel强制转换为我的具体实现。这在我的单元测试中无法在运行时执行。
CardView
这是我的单元测试中错误失败的地方。我有这个方法的存根,但它在运行时失败了显式转换,我仍然有点困惑为什么。我在单元测试中创建了这个模型的存根,但它仍然失败
...
cardView = (CardView) itemView.findViewById(R.id.card_view_list_text);
photosRecyclerView = (RecyclerView) itemView.findViewById(R.id.recycler_view_photos_memo);
relativeLayout = (RelativeLayout) itemView.findViewById(R.id.relativelayout_list_item_text_memo);
photosRecyclerView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
System.out.println("recyclerview called");
return false;
}
});
relativeLayout.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
System.out.println("RELATIVELAYOUT called");
return false;
}
});
cardView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
System.out.println("CARDVIEW CALLED");
return false;
}
});
...
答案 0 :(得分:0)
我做了一些挖掘,答案是在测试类中创建一个派生自接口的数据模型的实现。
public class TestDataModel : IMyInterface{}
答案 1 :(得分:0)
供以后遇到此问题的人使用。我最近遇到了从IEnumerable<IBlah>
转换为IEnumerable<Blah>
的问题。我解决该问题的方法是使用linq select语句,并在我遍历该语句时对其进行强制转换。像这样:
var interfaceValues = service.returnIBlahItems();
var castedValues = interfaceValues.Select(item => (Blah) item);
答案 2 :(得分:0)
您正在使用Getstuff
而不是GetListOfStuff
-也许是问题所在?