java - 如何捕获所有mockito监视类方法调用而不计算内部委托(delegate)

标签 java mockito spy method-invocation

假设有这样一个类:

public class A {
    public void smth {
    }
    public void smth2 {
        smth();
    }
}

我们用mockito监视它并进行简单的调用:

A spiedA = spy(new A());
spiedA.smth2();

之后当我们想要检索调用计数时:

Mockito.mockingDetails(spiedA).getInvocations().size()

它按预期返回两个调用。但我只想注册外部调用而无需内部代表团。有可能达到我要求的结果吗?如果只有 Mockito.Inspiration 可以提供调用堆栈,我会将其过滤掉。

最佳答案

Inspiration 类中有一个 Location location 字段。实际上内部有堆栈跟踪(这实际上是私有(private)字段,因此您应该通过反射使其可用)。之后,您可以获取所需的信息,例如:

((LocationImpl)((LinkedList<Invocation>) invocations).get(1).getLocation()).stackTraceHolder.stackTrace

但我真的不建议这样做,因为您将来不想维护该测试。 如果您确实需要,您可以将 smth() 提取到不同的类中并监视它。

关于java - 如何捕获所有mockito监视类方法调用而不计算内部委托(delegate),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53079758/

相关文章:

java - instanceof vs equals on defined string that identifies the Class

java - 如果数组列表中满足条件,如何比较元素并合并?

javascript - 如何使用与被测函数位于同一js文件中的Sinon.js来监视函数

java - mvn tomcat7 :deploy not work if no restart tomcat

Java:异常处理不起作用

spring-boot - Controller org.springframework.context.NoSuchMessageException 中的 Springboot Mockito 测试和 Autowiring 消息源

java - 为什么 Arquillian 中不再有模拟?

java - 使用 Mockito 模拟类的成员变量

java - Mockito spy 如何知道它何时进行 spy Activity ?

unit-testing - 在 Golang 中测试接受不返回值的回调函数的方法