我现在正在开发一个非常好的项目,我们引入了Android数据绑定。一切都在代码中工作正常,绑定完美,但是当涉及单元测试时,我无法测试我的代码。 我正在努力MOCK数据绑定...
将此行添加到 setUp()方法时:
PowerMockito.when(DataBindingUtil.class,“inflate”,inflater,anyInt(),any(ViewGroup.class),anyBoolean())。thenReturn(viewDataBinding.getRoot());
我将收到以下错误消息:
... thenReturn()可能会丢失。
正如你所看到的那样,我最后回复了,但是Mockito没有看到它。
我试图将代码移动到具体的测试方法中:
@Test
public void createViewHolder() {
.... CODE....
when(DataBindingUtil.inflate(inflater,anyInt(),any(ViewGroup.class),anyBoolean())).thenReturn(viewDataBinding);
... CODE ...}
在这种情况下,我会收到以下消息:
org.mockito.exceptions.misusing.WrongTypeOfReturnValue: inflate()无法返回ViewDataBinding $$ EnhancerByMockitoWithCGLIB $$ f5f40ad1 inflate()应返回View
我不明白,为什么我收到这条消息,因为DataBindingUtil.inflate在代码中返回一个ViewDataBinding,它完美地运行。 你们有没有试过在Android上模拟和单元测试数据绑定?
答案 0 :(得分:0)
好的问题如下: 需要补充:
@PrepareForTest({DataBindingUtil.class}) 到班级的开头
PowerMockito.mockStatic(DataBindingUtil.class);
PowerMockito.mockStatic(ViewDataBinding.class);
我必须将这些行添加到setUp();
然后:
when(DataBindingUtil.inflate(eq(inflater), anyInt(), any(ViewGroup.class), anyBoolean())).thenReturn(viewDataBinding);
when(viewDataBinding.getRoot()).thenReturn(itemView);
进入测试本身。