java – 模拟一个类的问题
我试图用mockito模拟Query类JDBI,但它无法模拟其基类SqlStatement的方法. 当运行下面的代码时,when语句实际上是在基类中调用具体实现,并且失败并出现NullPointerException.
我也尝试过使用EasyMock并获得相同的结果,它无法模拟这种方法. 更多信息: > Mockito版本是1.9.5 例外是:
任何想法如何解决这个问题? 最佳答案
SqlStatement中的绑定方法是最终的(例如
SQLStatement#bind(String,int) ),所以你不能使用Mockito来模拟它们,这是对模拟者目前无法绕过的JVM(编辑:)的限制.
EDIT2:请注意,正如下面的评论指出的那样,对上面所写的内容存在一些误解,这需要我澄清: > JVM的限制意味着您无法加载标记有最终访问权限的类型的子类,您不能覆盖标记为最终访问权限的方法,否则您将获得VerifyError. §8.1.1.2 final classes of the Java Language Specification §8.4.3.3 final methods of the JLS §4.10 of the Java Virtual Machine Specification 您的选择是更改您的设计,这样您就不必存根这些交互,或者您必须使用PowerMock,它使用类加载器的复杂技巧来重写类字节码(不是我喜欢的方法,尽管PowerMock技术上令人印象深刻). 希望有所帮助. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |