![](/img/trans.png)
[英]Verify scheduledExecutorService calls the runnable multiple times using Java mockito
[英]Java verify void method calls n times with Mockito
我正在嘗試驗證在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())
我會得到相同的錯誤。 對此的想法?
必要的方法是Mockito#verify :
public static <T> T verify(T mock,
VerificationMode mode)
mock
是您的mock
對象, mode
是VerificationMode
,它描述了如何驗證模擬。 可能的模式是 :
verify(mock, times(5)).someMethod("was called five times");
verify(mock, never()).someMethod("was never called");
verify(mock, atLeastOnce()).someMethod("was called at least once");
verify(mock, atLeast(2)).someMethod("was called at least twice");
verify(mock, atMost(3)).someMethod("was called at most 3 times");
verify(mock, atLeast(0)).someMethod("was called any number of times"); // useful with captors
verify(mock, only()).someMethod("no other method has been called on the mock");
您需要從Mockito
類中進行這些靜態導入才能使用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("was called once");
。
可以在同一個模擬上進行多次驗證調用,以實現“之間”驗證。 Mockito不支持像這樣的verify(mock, between(4,6)).someMethod("was called between 4 and 6 times");
,但我們可以寫
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次時,測試用例為綠色。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.