我正在研究一个Java项目想要为DTO中的.equals方法编写单元测试。在.equals方法中,有一个.getClass()方法被两个被测对象调用。我想嘲笑这个,但我不知道它想要什么类型的对象。我试过了,
when(mockRoomInv.getClass()).thenReturn(RoomInv.class);
答案 0 :(得分:9)
由于Object.getClass()
是最终版,因此您无法使用Mockito模拟该方法。我强烈建议你重构代码以另一种方式注入类。如果那是不可能的,你可以尝试powermock,你可以在那里模拟任何最终方法。 Object.getClass()
有点特殊,所以请务必在powermock中设置MockGateway.MOCK_GET_CLASS_METHOD = true
。
答案 1 :(得分:5)
Object.getClass()
是一种final
方法,因此您无法使用Mockito进行模拟。
你可以在https://github.com/powermock/powermock处使用Powermock(这是一个非常酷的工具)来模拟static
和final
方法(就像这一个)甚至是private
方法。< / p>
您可以按照in the Mockito wiki article的说明将其与Mockito一起使用。你会在那里找到一些有用的例子。