java - 使用 Mockito 监视对象

标签 java object casting mockito spy

我正在使用 Mockito 编写一些单元测试。我遇到了以下情况:

public interface A extends ABase { } 

其中ABase是一个包含具体方法的接口(interface)。我在 A 的实例上使用 Mockito.spy() ,并且我想验证在 ABase 中声明的方法 foo() 是否在我编写的一段代码中被调用。在上述代码中,A 被强制转换为 ABase 并调用 foo()。但是,我在尝试验证测试方法中调用了 foo() 的行上收到构建错误(未找到方法),如下所示:

A bar = spy(new A());
//... (function I'm testing is called, A is cast to ABase and foo() called)
verify(bar, times(1)).foo(); //problem line, foo not found

关于该怎么做有什么建议吗?谢谢!

编辑:我原来的问题有一些错误。抱歉,现在应该修复了。

最佳答案

除了 ABase 不能是类这一事实,因为 A 是一个接口(interface),而接口(interface)不能扩展类:

您正在将 A 传递给 verify。这甚至不应该编译。尝试使用 bar 代替。 Mockito 期望将模拟或 spy 传递给 verify,以便您可以验证对特定参数的调用。

关于java - 使用 Mockito 监视对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37820011/

相关文章:

c - 在 c 的 srand 函数中,我需要在 '(unsigned int)' 之前添加 'time(null)' 吗?

Java Derby 使用点用户名创建数据库

java - 为什么我的客户端线程/监听器没有收到来自服务器的广播消息?

java - Lucene 中的索引和搜索日期

c++ - “对象”尚未声明错误

Java 泛型 : Cannot convert from Object to T

java - 二维数组出现问题,无法卡住一个对象并将该对象复制到右侧 90 像素

javascript - 在数组中查找具有下一个较低值的对象

javascript - 我有一个表单,它接受用户输入,创建一个新对象并推送到一个数组中。如何防止创建重复的对象?

Java - 摆脱编译器警告?