使用数据绑定的Android Unittesting

时间:2016-07-13 11:02:18

标签: android unit-testing data-binding

我现在正在开发一个非常好的项目,我们引入了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上模拟和单元测试数据绑定?

1 个答案:

答案 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);

进入测试本身。