使用Mockito

时间:2015-12-26 20:33:04

标签: java mockito unchecked

我想在ScheduledExecutorService上模拟一个调用,在调用方法ScheduledFuture时返回模拟schedule类。以下代码编译并正常工作:

    ScheduledExecutorService executor = Mockito.mock(ScheduledExecutorService.class);
    ScheduledFuture future = Mockito.mock(ScheduledFuture.class);
    Mockito.when(executor.schedule(
        Mockito.any(Runnable.class),
        Mockito.anyLong(),
        Mockito.any(TimeUnit.class))
    ).thenReturn(future); // <-- warning here

除了我在最后一行收到未经检查的警告:

found raw type: java.util.concurrent.ScheduledFuture
  missing type arguments for generic class java.util.concurrent.ScheduledFuture<V>

 unchecked method invocation: method thenReturn in interface org.mockito.stubbing.OngoingStubbing is applied to given types
  required: T
  found: java.util.concurrent.ScheduledFuture

unchecked conversion
  required: T
  found:    java.util.concurrent.ScheduledFuture

是否有可能以某种方式避免这些警告?

ScheduledFuture<?> future = Mockito.mock(ScheduledFuture.class);之类的代码无法编译。

2 个答案:

答案 0 :(得分:7)

当使用替代的模拟规范方式时,所有警告都会消失:

    ScheduledFuture<?> future = Mockito.mock(ScheduledFuture.class);
    Mockito.doReturn(future).when(executor).schedule(
        Mockito.any(Runnable.class),
        Mockito.anyLong(),
        Mockito.any(TimeUnit.class)
    );

答案 1 :(得分:0)

在方法级别使用注解。

@SuppressWarnings("unchecked")