簡體   English   中英

當使用ExecutorService運行時,Mockito驗證“ times”顯示的次數比實際少

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM