gpt4 book ai didi

使用数据绑定(bind)进行 Android 单元测试

转载 作者:行者123 更新时间:2023-12-03 17:05:39 24 4
gpt4 key购买 nike

我现在正在做一个非常好的项目,我们在其中引入了 Android 数据绑定(bind)。代码中一切正常,绑定(bind)完美,但是在单元测试方面我无法测试我的代码。
我正在努力模拟数据绑定(bind)......

将此行添加到 时设置()方法:

PowerMockito.when(DataBindingUtil.class, "inflate", inflater,anyInt(),any(ViewGroup.class),anyBoolean()).thenReturn(viewDataBinding.getRoot());



我将收到以下错误消息:

...thenReturn() may be missing.



如你所见,最后我有 thenReturn ,但 Mockito 没有看到。

我试图将代码移动到具体的测试方法中:
  @Test
public void createViewHolder() {
.... CODE....
when(DataBindingUtil.inflate(inflater,anyInt(),any(ViewGroup.class),anyBoolean())).thenReturn(viewDataBinding);
... CODE ...}

在这种情况下,我将收到以下消息:

org.mockito.exceptions.misusing.WrongTypeOfReturnValue: ViewDataBinding$$EnhancerByMockitoWithCGLIB$$f5f40ad1 cannot be returned by inflate() inflate() should return View



我不明白,为什么我会收到这条消息,因为 DataBindingUtil.inflate 在代码中返回了一个 ViewDataBinding,它可以完美地工作。
你们有没有人尝试过在 Android 上模拟和单元测试数据绑定(bind)?

最佳答案

好的,问题如下:
需要补充:

@PrepareForTest({DataBindingUtil.class}) to the beginning of the 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);

进入测试本身。

关于使用数据绑定(bind)进行 Android 单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38349828/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com