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

标签 java unit-testing mockito

在我的单元测试中,我将 ScheduledExecutoryService 类的模拟实例注入(inject)到我要测试的类中,这样当 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));

最佳答案

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

更改为:

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

关于java - 模拟 ScheduledExecutorService.scheduleWithFixedDelay(...) 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43786137/

相关文章:

java - Java Runnable 运行的 JUnit 测试用例

ubuntu - Ubuntu 中的 Sun JDK 6 安装失败,出现 "ELF: not found"

unit-testing - 使用最小起订量 - 问题

java - 如何对将文件作为参数的方法进行单元测试和模拟

java - 如果模拟对象在实现类中设置为 null,则失去模拟

java - 如何实现代理模式?

java - protected void paintComponent(图形 g)

c# - 这还是Mock上的验证测试吗?

java - "Dump"运行集成测试时的hql数据库

scala - 使用 Mockito 模拟 Scala void 函数