[英]Mockito Verify “times” shows lesser count then actual when run with ExecutorService
我正在嘗試對包含執行程序服務的代碼運行進行單元測試,其中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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.