如何模拟Object.getClass



我正在处理一个Java项目,想为DTO中的.equals方法编写一个单元测试。在.equals方法中,有一个.getClass()方法被测试的两个对象调用。我想嘲笑它,但我不知道它想要什么类型的对象。我试过了,

when(mockRoomInv.getClass()).thenReturn(RoomInv.class);

但他肯定什么也没做。getClass的返回类型是什么?我如何操作它?

由于Object.getClass()是final,所以不能用Mockito模拟该方法。我强烈建议您重构代码,以另一种方式注入类。如果这不可能,您可以尝试powermock,在那里您可以模拟任何最终方法。Object.getClass()有点特殊,所以一定要在powermock中设置MockGateway.MOCK_GET_CLASS_METHOD = true

Object.getClass()是一个final方法,因此不能使用Mockito对其进行模拟。

您可以使用Powermock(这是一个非常酷的工具;)模拟staticfinal方法(如本例所示),甚至可以模拟private方法https://github.com/powermock/powermock.

您可以将它与Mockito一起使用,如Mockito wiki文章中所述。在那里你会发现一些有用的例子。

相关内容

  • 没有找到相关文章