模拟 ScheduledExecutorService.scheduleWithFixedDelay(...) 返回 null

kri*_*tap 3 java unit-testing mockito

在我的单元测试中,我将ScheduledExecutoryService类的一个模拟实例注入到我尝试测试的类中,以便在scheduleAtFixedRate(...)调用该方法时,它返回一个模拟的Future. 但出于某种原因,它总是返回null。有任何想法吗 ?

应用代码:

Future<?> t = 
scheduledExecutorService.scheduleAtFixedRate(this, 10, 10, TimeUnit.SECONDS);
Run Code Online (Sandbox Code Playgroud)

测试代码:

@Mock ScheduledExecutorService scheduledExecutorService;
@Mock ScheduledFuture<?> t;

Mockito.doReturn(t).when(scheduledExecutorService).scheduleWithFixedDelay(
any(Runnable.class), anyLong(), anyLong(), any(TimeUnit.class));
Run Code Online (Sandbox Code Playgroud)

Mac*_*ski 5

尽管您期望的是 Long 值,但您正在传递整数(可能这就是方法参数的定义)。

改成:

Mockito.doReturn(t).when(scheduledExecutorService).scheduleWithFixedDelay(
any(Runnable.class), anyInt(), anyInt(), any(TimeUnit.class));
Run Code Online (Sandbox Code Playgroud)