Kar*_*oly 5 data-binding android unit-testing
我现在正在做一个非常好的项目,我们在其中引入了 Android 数据绑定。代码中一切正常,绑定完美,但是当涉及到单元测试时,我无法测试我的代码。我正在努力模拟数据绑定......
将此行添加到setUp()方法时:
PowerMockito.when(DataBindingUtil.class, "inflate", inflater,anyInt(),any(ViewGroup.class),anyBoolean()).thenReturn(viewDataBinding.getRoot());
我将收到以下错误消息:
...thenReturn() 可能会丢失。
正如你所看到的,我在最后有 thenReturn,但 Mockito 没有看到它。
我试图将代码移动到一个具体的测试方法中:
@Test
public void createViewHolder() {
.... CODE....
when(DataBindingUtil.inflate(inflater,anyInt(),any(ViewGroup.class),anyBoolean())).thenReturn(viewDataBinding);
... CODE ...}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我将收到以下消息:
org.mockito.exceptions.misusing.WrongTypeOfReturnValue: ViewDataBinding$$EnhancerByMockitoWithCGLIB$$f5f40ad1 不能被 inflate() 返回 inflate() 应该返回 View
我不明白为什么我会收到这条消息,因为 DataBindingUtil.inflate 在代码中返回一个 ViewDataBinding,它在那里完美地工作。你们有没有试过在 Android 上模拟和单元测试数据绑定?
好的,问题如下:需要添加:
@PrepareForTest({DataBindingUtil.class}) 到类的开头
PowerMockito.mockStatic(DataBindingUtil.class);
PowerMockito.mockStatic(ViewDataBinding.class);
Run Code Online (Sandbox Code Playgroud)
我必须将这些行添加到 setUp();
然后:
when(DataBindingUtil.inflate(eq(inflater), anyInt(), any(ViewGroup.class), anyBoolean())).thenReturn(viewDataBinding);
when(viewDataBinding.getRoot()).thenReturn(itemView);
Run Code Online (Sandbox Code Playgroud)
进入测试本身。
归档时间: |
|
查看次数: |
2542 次 |
最近记录: |