Java 模拟静态方法

Java 模拟静态方法,java,static,mocking,powermock,Java,Static,Mocking,Powermock,我做了一些研究,发现PowerMock能够模拟静态java方法 有人能(从技术上)解释一下PowerMock与JUnit和其他不能或不可以做的事情有什么不同吗?还有为什么静态方法在尝试模拟时会引起问题 谢谢 为了模拟实例方法,只需在子类中重写它。静态方法无法做到这一点,因为不存在“静态多态性” Powermock可以做到这一点,因为它使用字节码,而其他流行的框架依赖于多态性,并使用CGLIB创建子类 链接:“基本上,所有标准模拟框架都使用CGLib创建模拟对象,这意味着它们基于层次模型(CGLi

我做了一些研究,发现PowerMock能够模拟静态java方法

有人能(从技术上)解释一下PowerMock与JUnit和其他不能或不可以做的事情有什么不同吗?还有为什么静态方法在尝试模拟时会引起问题

谢谢

为了模拟实例方法,只需在子类中重写它。静态方法无法做到这一点,因为不存在“静态多态性”

Powermock可以做到这一点,因为它使用字节码,而其他流行的框架依赖于多态性,并使用CGLIB创建子类

链接:“基本上,所有标准模拟框架都使用CGLib创建模拟对象,这意味着它们基于层次模型(CGLib创建类的一个子类,在运行时进行测试,该子类是实际的模拟对象)而不是PowerMock通过向MockGateway授权来进行字节码操作而使用的委托模型。”