假设我有一个这样的java类

public class UnderTest {
   public void method1() { 
      callRealMethod();
  }
}

我想创建一个间谍对象并修改该方法的行为.我发现了一个在groovy中使用Spock测试框架进行测试的代码示例,如下所示:

UnderTest underTest = Spy() {
      method1() >> {
        callRealMethod()
        timesExecuted++
      }
}

我如何用Java而不是Spock/Groovy来实现这一点?

推荐答案

使用eg Mockito计算调用计数.

UnderTest spiedInstance=Mockito.spy(realInstance)

verify(spiedInstance,times(x)).method1();

Java相关问答推荐

我应该避免在Android中创建类并在运行时编译它们吗?

如何在SystemiccationRetryListenerSupport中获得类级别的spring retryable annotation中指定的标签?

RxJava PublishSubject缓冲区元素超时

将成为一个比较者.比较…在现代Java中,编译器会对`CompareTo`方法进行优化吗?

AlarmManager没有在正确的时间发送alert

从技术上讲,OPC UA客户端是否可以通过转发代理将请求通过 tunel 发送到OPC UA服务器?

Java函数式编程中的双值单值映射

Java中实现的归并排序算法给出ArrayIndexOutOfBound异常

我无法获取我的Java Spring应用程序的Logback跟踪日志(log)输出

CompleteableFuture是否运行在不同的内核上?

Java-动态绑定-问题-了解

支持MySQL 5.6的最新Hibernate版本

来自外部模块的方面(对于Java+Gradle项目)不起作用

如何在Java中为thunk创建映射器函数

垃圾回收器是否真的删除超出作用域的对象?

除0错误/抱歉我的句子是PT

如何在右击时 Select 新行?

当使用不同的参数类型调用时,为什么围绕Objects.equals的类型安全包装不会失败?

设置背景时缺少Android编辑文本下划线

Jackson YAML:支持锚点扩展/覆盖