0

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

但我不太了解那里提供的解决方案。

有人能帮忙吗?

4

1 回答 1

1

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

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

};
Derived d = new Derived();
System.out.println(plot.getWidth());  // prints 10
...
于 2011-02-15T05:50:19.087 回答