我正在尝试使用jMockIt找到一种用我自己的实现替换继承的final方法的方法。
假设我有以下内容:
public class Base {
...
public final int getX() {...}
}
public class Derived extends Base {
}
有没有办法可以重新定义getX()以便总是返回10?
我尝试过这样做:
new Base() {
@Mock
public int getX() {
return 10;
}
};
Derived d= new Derived();
System.out.println(d.getX());
这会产生关于jMockIt的运行时异常无法找到int getX()的匹配方法。
我遇到了这个帖子: http://groups.google.com/group/jmockit-users/browse_thread/thread/27a282ff2bd4ad96
但我并不完全掌握那里提供的解决方案。
有人能帮忙吗?
答案 0 :(得分:1)
找到一个解决方案......看起来我只需要模拟基类,派生的实例也得到了更新:
...
new MockUp<Base>() {
@Mock int getX() { return 10;}
};
Derived d = new Derived();
System.out.println(plot.getWidth()); // prints 10
...