Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如果一个方法中有一个void方法,如何用返回值模拟该方法_Java_Android_Junit_Mockito - Fatal编程技术网

Java 如果一个方法中有一个void方法,如何用返回值模拟该方法

Java 如果一个方法中有一个void方法,如何用返回值模拟该方法,java,android,junit,mockito,Java,Android,Junit,Mockito,我正在测试一个类,它有一个可测试的方法(下面的方法本身)和一个返回值。 使用Mockito我遇到了一个问题。void方法roomDao.updateData(outData)存在问题 错误日志: org.mockito.exceptions.misusing.CannotStubVoidMethodWithReturnValue: “updateData”是一个void方法,不能使用返回值对其进行存根! 空隙通常留有可丢弃物: doThrow(异常).when(模拟).someVoidMetho

我正在测试一个类,它有一个可测试的方法(下面的方法本身)和一个返回值。 使用Mockito我遇到了一个问题。void方法roomDao.updateData(outData)存在问题

错误日志:

org.mockito.exceptions.misusing.CannotStubVoidMethodWithReturnValue: “updateData”是一个void方法,不能使用返回值对其进行存根! 空隙通常留有可丢弃物: doThrow(异常).when(模拟).someVoidMethod()


我似乎不太明白如何解决这个问题,因为void方法在一个具有返回值的方法中。

而不是
new SimRepo()
尝试使用Mockito的mock方法模拟它:

@Test
public void getData() {
    SimRepo simRepo =Mockito.mock(SimRepo.class);
    Mockito.when(simRepo.getData(request)).thenReturn(new Entity());
}
更新: 如果还想计算此模拟方法调用的次数,请使用以下方法:

// this will check if mock method getData() with parameter `request` called exactly 1 times or not.

Mockito.verify(simRepo, Mockito.times(1)).getData(request);

无论你在哪里模拟
roomDao
?如果你想模拟
SimRepo
,为什么你要用
new SimRepo()
初始化它,而不是
Mockito.mock(SimRepo.class)
?@Smutje问题已经解决了,谢谢你的时间。这对我很有用,谢谢。但是你能再告诉我一件事吗?如何检查getData()方法中是否调用了方法以及调用了多少次?非常感谢!很乐意帮忙
@Test
public void getData() {
    SimRepo simRepo =Mockito.mock(SimRepo.class);
    Mockito.when(simRepo.getData(request)).thenReturn(new Entity());
}
// this will check if mock method getData() with parameter `request` called exactly 1 times or not.

Mockito.verify(simRepo, Mockito.times(1)).getData(request);