用jmockit替换继承的final方法

时间:2011-02-15 03:17:59

标签: java unit-testing mocking jmockit

我正在尝试使用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

但我并不完全掌握那里提供的解决方案。

有人能帮忙吗?

1 个答案:

答案 0 :(得分:1)

找到一个解决方案......看起来我只需要模拟基类,派生的实例也得到了更新:

...
new MockUp<Base>() {
    @Mock int getX() { return 10;}

};
Derived d = new Derived();
System.out.println(plot.getWidth());  // prints 10
...