我有一段在 CompletableFuture#runAsync 块中运行的 Java 代码,我想验证在此块中,从未调用过特定服务。
通常要验证它是否被实际调用,我可以使用 timeout
VerificationMode 来断言 runAsync 何时可能完成
verify(myService, timeout(500)).methodX(param);
但就我而言,我想检查服务是否没有交互。通常这是通过 verifyNoInteractions(myService);
完成的,但它会立即触发并且很有可能出现误报。
解决方法是,对于服务中的每个方法,我键入使用 times(0)
VerificationMode 例如
verify(myService, timeout(500).times(0)).methodX(param);
verify(myService, timeout(500).times(0)).methodY(param);
verify(myService, timeout(500).times(0)).methodZ(param);
但出于所有显而易见的原因,这是一个糟糕的主意。
我知道另一种可能性是添加 Thread.sleep(500);
,但如果可能,我想使用 Mockito API。我只是没在其他地方看到过。