Java 如何在最终类中模拟公共方法
我试图在最后一个类中模拟一个公共方法。我的问题是,由于我无法创建最后一个类的对象,所以我无法监视它。下面是我课堂上的方法Java 如何在最终类中模拟公共方法,java,unit-testing,junit,junit4,powermockito,Java,Unit Testing,Junit,Junit4,Powermockito,我试图在最后一个类中模拟一个公共方法。我的问题是,由于我无法创建最后一个类的对象,所以我无法监视它。下面是我课堂上的方法 public final class Method extends Executable { @CallerSensitive public Object invoke(Object obj, Object... args) throws IllegalAccessException, IllegalArgumentException,
public final class Method extends Executable {
@CallerSensitive
public Object invoke(Object obj, Object... args)
throws IllegalAccessException, IllegalArgumentException,
InvocationTargetException
{
if (!override) {
if (!Reflection.quickCheckMemberAccess(clazz, modifiers)) {
Class<?> caller = Reflection.getCallerClass();
checkAccess(caller, clazz, obj, modifiers);
}
}
MethodAccessor ma = methodAccessor; // read volatile
if (ma == null) {
ma = acquireMethodAccessor();
}
return ma.invoke(obj, args);
}
}
public final类方法扩展了可执行文件{
@呼叫者敏感
公共对象调用(对象对象、对象…参数)
抛出IllegalAccessException,IllegalArgumentException,
调用目标异常
{
如果(!覆盖){
if(!Reflection.quickCheckMemberAccess(clazz,修饰符)){
Class caller=Reflection.getCallerClass();
检查访问(呼叫者、clazz、obj、修饰符);
}
}
MethodAccessor ma=MethodAccessor;//读取易失性
如果(ma==null){
ma=acquireMethodAccessor();
}
返回ma.invoke(obj,args);
}
}
我正在使用powermockito进行单元测试。我使用了
PowerMockito.spy(Method.class)
用于监视相同的内容,但不起作用 这门课必须是期末考试,有什么原因吗?如果您无法避免该类是final:为什么不提供一个接口来提供您想要模拟的方法呢另外,请阅读Powermocks(或Mockitos)文档,了解mock()
和spy()
@timothyth之间的区别。该类是一个库类。我试图模仿这一点,因为我正在从这里调用webservice。“这个类是一个库类”没有理由final
IMHO,除非它不在您的控制之下。。。