gpt4 book ai didi

java - 模拟 : doNothing tries to invoke the void method in Android instrumented test

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:58:36 26 4
gpt4 key购买 nike

编辑

阅读 FAQ 时,它让我知道什么可能会导致这里出现问题。只是为了试一试,我将 stub 方法的可见性 open() 更改为 public 并且它按预期执行,没有任何抛出异常。

我不确定这是错误还是版本 1.10.19 的预期行为。

原帖

在我的 Android 项目中,我使用 Mockito以简化某些(仪器)测试的实现。我能够模拟一些非 void 方法,但没有弄清楚如何正确地 stub void 方法

我正在尝试测试类 HouseHouse 有一个类型为 Door 的属性和一个方法 openDoor()。一个 Door 和一个 Handle 类型的属性和一个方法 open()。当我调用 openDoor() 时,我想检查 open() 是否被调用,所以我写了这段代码:

@Test
public void testOpenDoorInitial() {
Door stubbedDoor = mock(Door.class);
doNothing().when(stubbedDoor).open();
myHouse.setDoor(stubbedDoor); //myHouse has been initialized
myHouse.openDoor();
verify(stubbedDoor, times(1)).open();
}

public class House {
Door door;
//rest of code
void setDoor(Door d){
door = d;
}
void openDoor(){
// some conditions
door.open();
}
}

public class Door {
Handle handle;
//... rest of code
void open(){
handle.tryToUse(); //Throws NullPointException
}
}

问题是在 doNothing.when(stubbedDoor).open(); 行上抛出一个 NullPointerException,告诉我 handle一片空白。 doNothing()似乎实际上调用了 open(),这是我不期望的。

有人知道这个问题的根源吗?我是 Mockito 的新手,所以我可能错过了一些明显的东西。

为了在仪器测试中启用 Mockito,我导入了以下模块。

androidTestCompile 'org.mockito:mockito-core:1.10.19'
androidTestCompile "com.crittercism.dexmaker:dexmaker:1.4"
androidTestCompile "com.crittercism.dexmaker:dexmaker-dx:1.4"
androidTestCompile "com.crittercism.dexmaker:dexmaker-mockito:1.4"

最佳答案

尝试使用较新的版本,您使用的是 1.10.19。我不确定,但似乎这个问题之后就解决了,如您所见here . Here你可以找到版本列表。

关于java - 模拟 : doNothing tries to invoke the void method in Android instrumented test,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37972456/

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