Замена унаследованных финальных методов с помощью jmockit - PullRequest
0 голосов
/ 15 февраля 2011

Я пытаюсь найти способ заменить унаследованный конечный метод своей собственной реализацией с использованием jMockIt.

Допустим, у меня есть следующее:

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 Ответ

1 голос
/ 15 февраля 2011

Нашел решение ... похоже, мне просто надо было смоделировать базовый класс, и производные экземпляры также были обновлены:

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

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