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?