升级Java后,Mockito验证方法失败并使用Object ... args

时间:2015-09-03 12:32:28

标签: java mockito

升级到Java 8之后,之前有效的测试已经开始失败。 这是测试部分:

    verify(session, times(1)).reject(any(), any(), any());

这是拒绝方法:

public void reject(@SuppressWarnings("hiding") String fieldName, Object... args) {
    reject(fieldName, null, args);
}

以下是错误消息:

Wanted but not invoked:
ruleSession.reject(<any>, <any>, <any>);

However, there were other interactions with this mock:

ruleSession.reject(
    "year",
    2000,
    2000
);

正如您所看到的,实际上会调用拒绝方法,但Mockito无法识别它。我猜它与Object ... args

有关

但是在运行带有两个args的方法时:

    verify(session).reject(any(), any());

错误是:

Actual invocation has different arguments:
ruleSession.reject(
    "year",
    2000,
    2000
);

我使用的是Mockito版本1.10.19

1 个答案:

答案 0 :(得分:1)

看来我需要更换

verify(session, times(1)).reject(any(), any(), any());

使用:

verify(session, times(1)).reject(any(), anyVararg());

由于旧的方式在Java 8中不再有效。