Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.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 doThrow()有效,但thunrow()无效';T_Java_Mockito_Powermockito - Fatal编程技术网

Java doThrow()有效,但thunrow()无效';T

Java doThrow()有效,但thunrow()无效';T,java,mockito,powermockito,Java,Mockito,Powermockito,我试着模仿一个电话,我看到一件奇怪的事情发生了。我正在使用PowerMockito进行模拟 1. when(store.read(Mockito.anyString())).thenThrow(IOException.class); 2. doThrow(IOException.class).when(store).read(Mockito.anyString()); 当我使用语句1模拟调用时,我得到以下错误: Runtime Exception (that's all, no stacktr

我试着模仿一个电话,我看到一件奇怪的事情发生了。我正在使用PowerMockito进行模拟

1. when(store.read(Mockito.anyString())).thenThrow(IOException.class);
2. doThrow(IOException.class).when(store).read(Mockito.anyString());
当我使用语句1模拟调用时,我得到以下错误:

Runtime Exception (that's all, no stacktrace)
当我使用语句2模拟调用时,它运行得非常好

我使用spring对store变量进行了如下模拟:

<bean id="store" class="org.mockito.Mockito" factory-method="mock" >
        <constructor-arg value="org.company.state.work.s3.StateGraphStore" />
</bean>


我不确定这两种说法之间到底有什么区别,以及发生这种情况的原因是什么。

dup中的答案解释了为什么在某些情况下,
doThrow
更安全。一般来说在1。您可以在
存储
实例上直接调用
读取
,并在2中调用。在Mockito创建的包装器/代理上调用
read
。但是,如果不知道
store
是什么,或者
read
做什么,就不可能准确地说出您的示例中发生了什么。抱歉,由于我在没有完全阅读被复制的问题的情况下意外地将其作为一个被复制者关闭,因此重新打开了。我不相信这是一个确切的骗局。