PowerMock / Mockito 铸造模拟对象不起作用

PowerMock / Mockito casting mocked objects not working

我在测试中初始化:

this.sessionMock = mock(Session.class);

并在方法中测试行:

((MySession)session).setRecordLimits(recordLimits)

给我:

 java.lang.ClassCastException:
 org.hibernate.Session$$EnhancerByMockitoWithCGLIB$61a329 
 cannot be cast to myApp.MySession

class:

public class MySession extends AbstractSessionImpl implements EventSource

是 Mockito / Powermock 的问题还是 Hibernate 的问题?有什么解决办法吗?

通过告诉 Mockito/Powermock 你想要模拟 Session,它无法知道你想要模拟的 class 实际上是 MySession.

由于您的代码实际上依赖于 MySession,您应该这样做

this.sessionMock = mock(MySession.class);

改为