为什么我在这里得到InvalidUseOfMatchersException?

时间:2015-08-21 14:50:42

标签: java junit mockito

我的测试用例中出现以下错误:

junit.framework.AssertionFailedError: Exception occured :
        org.mockito.exceptions.misusing.InvalidUseOfMatchersException: 
        Invalid use of argument matchers!
        2 matchers expected, 1 recorded:

这是我的代码:

Mockito.when(mockHelloPeristenceImpl.retrieveHellorequest(Mockito.anyLong()))
              .thenReturn(Mockito.any(Hellorequest.class));

我尝试了互联网上针对此问题提出的所有选项,没有任何效果。 有什么问题?

1 个答案:

答案 0 :(得分:2)

您无法按照自己的方式返回Matcher。您必须指定您正在返回的实际对象。要么做这样的事情:

Mockito.when(mockHelloPeristenceImpl.retrieveHellorequest(Mockito.anyLong()))
       .thenReturn(Mockito.mock(Hellorequest.class));

或者,给它一个回答策略,例如

Mockito.when(mockHelloPeristenceImpl.retrieveHellorequest(Mockito.anyLong()))
       .then(Mockito.RETURNS_MOCKS);

另外,使用以下代码可以缩短您的代码:

import static org.mockito.Mockito.*;

然后你的测试声明就是:

when(mockHelloPeristenceImpl.retrieveHellorequest(anyLong()))
          .then(RETURNS_MOCKS);