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

时间:2017-05-04 14:47:27

标签: java unit-testing mockito

在我的单元测试中,我已经将ScheduledExecutoryService类的模拟实例注入到我要测试的类中,这样当调用scheduleAtFixedRate(...)方法时,它会返回一个模拟的Future。但出于某种原因,它总是返回null。有什么想法吗?

申请代码:

Future<?> t = 
scheduledExecutorService.scheduleAtFixedRate(this, 10, 10, TimeUnit.SECONDS);

测试代码:

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

Mockito.doReturn(t).when(scheduledExecutorService).scheduleWithFixedDelay(
any(Runnable.class), anyLong(), anyLong(), any(TimeUnit.class));

2 个答案:

答案 0 :(得分:2)

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

更改为:

Mockito.doReturn(t).when(scheduledExecutorService).scheduleWithFixedDelay(
any(Runnable.class), anyInt(), anyInt(), any(TimeUnit.class));

答案 1 :(得分:1)

您的应用程序代码使用的是scheduleAtFixedRate,但您的测试代码只是模拟方法scheduleWithFixedDelay