![](/img/trans.png)
[英]java.lang.NoSuchMethodError: org.mockito.MockingDetails.getMockCreationSettings()Lorg/mockito/mock/MockCreationSettings eeror
[英]Mockito mockingDetails.getInvocations() question
我想要做的是打印出使用 Mockito 调用某个方法的次数。
当我执行以下操作时:
int counter =
Mockito.mockingDetails(myDependency)
.getInvocations()
.size();
System.out.println( counter );
它打印出模拟上调用的所有方法,但是,我只想打印出一个特定方法的计数器,所以如果我尝试,
int counter =
Mockito.mockingDetails(myDependency.doSomething())
.getInvocations()
.size();
System.out.println( counter );
它发生错误,说
传递给 Mockito.mockingDetails() 的参数应该是一个模拟,但为空!
有谁知道如何解决这个问题? 提前致谢!
你可以玩反射:
MockingDetails mockingDetails = Mockito.mockingDetails(myDependency);
Method doSomethingMethod = mockingDetails.getMockHandler()
.getMockSettings()
.getTypeToMock()
.getMethod("doSomething"); //here you can also pass the arguments of this method
long counter = mockingDetails.getInvocations()
.stream()
.filter(invocation -> invocation.getMethod().equals(doSomethingMethod))
.count();
请注意,为了获取Method
类的对象,我们不能简单地调用myDependency.getClass().getMethod("doSomething")
因为在这种情况下getClass()
将返回运行时生成的 Mockito 的包装类及其自己的Method
对象. 所以过滤器中的equals
稍后会返回false
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.