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

Java 模拟ScheduledExecutorService.scheduleWithFixedDelay(…)返回null,java,unit-testing,mockito,Java,Unit Testing,Mockito,在我的单元测试中,我将ScheduledExecutoryService类的模拟实例注入到我尝试测试的类中,这样当调用scheduleAtFixedRate(…)方法时,它将返回模拟的Future。但出于某种原因,它总是返回null。有什么想法吗 申请代码: Future<?> t = scheduledExecutorService.scheduleAtFixedRate(this, 10, 10, TimeUnit.SECONDS); 未来t= scheduledExecut

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

申请代码:

Future<?> t = 
scheduledExecutorService.scheduleAtFixedRate(this, 10, 10, TimeUnit.SECONDS);
未来t=
scheduledExecutorService.scheduleAtFixedRate(这个,10,10,时间单位。秒);
测试代码:

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

Mockito.doReturn(t).when(scheduledExecutorService).scheduleWithFixedDelay(
any(Runnable.class), anyLong(), anyLong(), any(TimeUnit.class));
@Mock ScheduledExecutorService ScheduledExecutorService;
@模拟计划未来t;
Mockito.doReturn(t).when(scheduledExecutorService).scheduleWithFixedDelay(
any(Runnable.class)、anyLong()、anyLong()、any(TimeUnit.class));
您正在传递整数(可能这就是方法参数的定义),尽管您需要的是长值

改为:

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

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

我已将参数更改为long,但仍然看到问题。scheduleAtFixedRate与scheduleWithFixedDelay?