Mockito 验证"times"在使用执行器服务运行时显示的计数少于实际计数



我正在尝试对包含执行程序服务的代码运行进行单元测试,其中 api 被调用两次或更多次,具体取决于列表中的设备数量。当我尝试从控制台对此进行单元测试时,Mockito 验证失败,抛出一个错误,即在我传递设备列表时仅调用一次 Api。但是,当我在 intellij 中调试时,它可以正常工作,并根据列表中的设备数量执行和验证。

以下是代码

final ExecutorService executor = new ThreadPoolExecutor(MAX_THREADS,
    TimeUnit.MILLISECONDS,
    new LinkedBlockingQueue<Runnable>());
DeviceList.stream().forEach(device -> executor.execute(() ->
    GatewayToTest.deliver(device, id, testObject)));

单元测试代码:

verify(GatewayToTest, times(devices.size()))
    .deliver(any(Device.class), anyString(), any(TestObject.class));

在上面的代码中,当我在控制台中运行单元测试时,GatewayToTest 只被调用一次。

执行异步

运行,因此您无法保证所有对GatewayToTest.deliver调用都发生在verify 之前。提交任务执行后,尝试等待终止:

executor.awaitTermination(10,TimeUnit.SECONDS);

相关内容

  • 没有找到相关文章

最新更新