用 jmockit 替换继承的最终方法

发布于 2024-10-17 04:46:05 字数 721 浏览 3 评论 0原文

我正在尝试找到一种方法,用我自己使用 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

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

有人可以帮忙吗?

I'm trying to find a way to replace an inherited final method with my own implementation using jMockIt.

Lets say I have the following:

public class Base {
  ...
  public final int getX() {...}
}

public class Derived extends Base {
}

Is there a way that I can redefine getX() to always return 10 for example?

I tried doing something along the lines of this:

new Base() {
    @Mock
    public int getX() {
        return 10;
    }
};

Derived d= new Derived();

System.out.println(d.getX());

Which yields a runtime exception about jMockIt not being able to find a matching method for int getX().

I came across this thread:
http://groups.google.com/group/jmockit-users/browse_thread/thread/27a282ff2bd4ad96

But I don't quite grasp the solution provided there.

Anybody able to help out?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

爱要勇敢去追 2024-10-24 04:46:06

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

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

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

Found a solution...looks like I just had to mock the base class and the derived instances also got updated:

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

};
Derived d = new Derived();
System.out.println(plot.getWidth());  // prints 10
...
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文