协议缓存类被标记为final
,可能是出于效率的考虑; 但这使得它们很难进行测试 - Mockito无法对最终类进行模拟/跟踪。我尝试使用PowerMockito
,但没有成功:当准备测试获得final
类时,我收到一个ClassFormatError
错误。
我到目前为止的解决方法是创建可模拟适配器接口,但我希望有更简单的方法。
协议缓存类被标记为final
,可能是出于效率的考虑; 但这使得它们很难进行测试 - Mockito无法对最终类进行模拟/跟踪。我尝试使用PowerMockito
,但没有成功:当准备测试获得final
类时,我收到一个ClassFormatError
错误。
我到目前为止的解决方法是创建可模拟适配器接口,但我希望有更简单的方法。
JMockit可以处理final
和static
。只需要注意如何设置它,因为它需要使用-javaagent JVM参数,或者对类路径进行微调,或者添加额外的注释才能模拟final
和static
。
-javaagent:<proper path>/jmockit.jar
添加为JVM启动参数,或者在使用JDK 1.6时将jmockit.jar添加到junit-xyz.jar之前的类路径中。如果仍然失败,请在JMockit用户讨论组中发布您的具体问题。 - RogérioJDave有一个Unfinalizer,可以与JMock ClassImposteriser集成。
它无法取消加载自引导类加载器的类的最终状态,并且在启动测试时需要一个VM参数。