Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.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使用Mockito验证void方法调用n次_Java_Unit Testing_Junit_Mockito_Verify - Fatal编程技术网

Java使用Mockito验证void方法调用n次

Java使用Mockito验证void方法调用n次,java,unit-testing,junit,mockito,verify,Java,Unit Testing,Junit,Mockito,Verify,我试图验证是否在DAO内部调用了(void)方法——我使用的是一个提交点,它将结果列表发送到该点,重置列表并继续。 假设列表中有4件事情,并且提交点为1,我希望“send”方法被调用4次。 我可以通过编写 Mockito.verify(mock.send() 它过去了。。但我想确认它被调用的次数。我认为 Mockito.verify(mock.send(),times(4)) 这就足够了,但它说参数不适合验证 顺便说一下,如果我将Mockito.verify(mock).send()更改为Moc

我试图验证是否在DAO内部调用了(void)方法——我使用的是一个提交点,它将结果列表发送到该点,重置列表并继续。 假设列表中有4件事情,并且提交点为1,我希望“send”方法被调用4次。 我可以通过编写

Mockito.verify(mock.send()

它过去了。。但我想确认它被调用的次数。我认为

Mockito.verify(mock.send(),times(4))

这就足够了,但它说参数不适合验证

顺便说一下,如果我将
Mockito.verify(mock).send()
更改为
Mockito.verify(mock.send())
Mockito.verify((mock.send())
,我会得到相同的错误。对此的想法?

必要的方法是:

为了使用
verify
方法和这些验证模式,您需要从类中进行这些静态导入:

import static org.mockito.Mockito.atLeast;
import static org.mockito.Mockito.atLeastOnce;
import static org.mockito.Mockito.atMost;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.only;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
因此,在您的情况下,正确的语法是:

Mockito.verify(mock, times(4)).send()
这将验证对模拟对象调用方法
send
的次数是否为4次。如果调用次数少于或多于4次,则将失败


如果您只想检查,如果该方法已被调用一次,则不需要传递
VerificationMode
。简单的

verify(mock).someMethod("was called once");
那就足够了。它在内部使用
verify(mock,times(1)).someMethod(“被调用一次”)


可以在同一模拟上进行多个验证调用,以实现“中间”验证。Mockito不支持这样的东西
verify(mock,介于(4,6)之间),但我们可以编写

verify(mock, atLeast(4)).someMethod("was called at least four times ...");
verify(mock, atMost(6)).someMethod("... and not more than six times");

相反,要得到同样的行为。边界是包含在内的,因此当方法被调用4、5或6次时,测试用例是绿色的。

Try。我想知道为什么您将
send()
方法调用“移动”到
verify
方法中。您已经有了正确的语法。还要注意,如果您不关心某个东西被调用了多少次,那么您可以编写
verify(mock,atleastone()).send()谢谢,没错。我发现令人困惑的是,
Mockito.verify(mock).send()
传递了,但仅仅封装它就导致了一个错误,而这个错误不会改变任何东西。然而,这是一场胜利!对于希望找到
VerificationMode
方法的位置(用于静态导入或显式引用)的任何人,它们位于
org.mockito.internal.verification.VerificationModelFactory
verification(mock,至少(0)).someMethod(“被调用了任意次数”)
有助于忽略调用验证有类似于
验证(在(m,n)之间)的东西
可以验证m和n之间的调用数?@nishant不,Mockito似乎不支持这一点,但您可以调用
验证
到至少(m)
atMost(n)
的时间来获得相同的行为。我已经编辑了答案,并解释了这一点。@KevinWelker你是对的,我已经删除了有关
VerificationModelFactory
的信息。它在最新版本中仍然可用,但我同意不应该使用内部类。
verify(mock).someMethod("was called once");
verify(mock, atLeast(4)).someMethod("was called at least four times ...");
verify(mock, atMost(6)).someMethod("... and not more than six times");