Mockito:org.mockito.exceptions.misusing.InvalidUseOfMatchersException

org.mockito.exceptions.misusing.InvalidUseOfMatchersException: 
Invalid use of argument matchers!
2 matchers expected, 1 recorded:
-> at com.didi.bigdata.tag.control.DTagOuterControllerTest.lockDtagsTest(DTagOuterControllerTest.java:89)

This exception may occur if matchers are combined with raw values:
    //incorrect:
    someMethod(anyObject(), "raw String");
When using matchers, all arguments have to be provided by matchers.
For example:
    //correct:
    someMethod(anyObject(), eq("String by matcher"));

For more info see javadoc for Matchers class.

这个错误是新手常犯的错误,先看测试代码

Mockito.when(callerService.checkCallerAuth(Mockito.anyString(),Const.EDITFILE_OUTER_CALLER_API)).thenReturn(true);//错误发生的代码区
Mockito.when(dtagOuterService.saveTagLock(Matchers.same(tagLock))).thenReturn("correct");

错误分析:
从异常的位置来看,该异常发生在打桩阶段,还未执行到真正的测试。
从异常的信息来看,显然违反了一个Mockito框架中的Matchers匹配参数的规则。根据Matchers文档如下,在打桩阶段有一个原则,一个mock对象的方法,如果其若干个参数中,有一个是通过Matchers提供的,则该方法的所有参数都必须通过Matchers提供。而不能是有的参数通过Matchers提供,有的参数直接给出真实的具体值。
解决方法
就是修改两个都用具体值或者两个都用匹配。

        Mockito.when(callerService.checkCallerAuth(Mockito.anyString(),Mockito.anyInt())).thenReturn(true);
        Mockito.when(dtagOuterService.saveTagLock(Matchers.same(tagLock))).thenReturn("correct");

注意:在Mockito 1.x中,org.mockito.Matchers已经过时,org.mockito.Mockito继承自Matchers,用以取代Matchers。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值