我正在开发一个 Java 项目,想为我在 DTO 中的 .equals 方法编写单元测试。在 .equals 方法中,有一个 .getClass() 方法被两个被测对象调用。我想模拟这个,但我不知道它想要什么类型的对象。我试过,
when(mockRoomInv.getClass()).thenReturn(RoomInv.class);
但肯定没有做任何事情。getClass 的返回类型是什么,如何操作它?
最后Object.getClass()
,您不能使用 Mockito 模拟该方法。我强烈建议您重构代码以另一种方式注入类。如果这不可能,您可以尝试powermock,您可以在其中模拟任何最终方法。Object.getClass()
有点特殊,所以一定要MockGateway.MOCK_GET_CLASS_METHOD = true
在powermock中设置。
Object.getClass()
是一种final
方法,所以你不能用 Mockito 模拟它。
您可以使用https://github.com/powermock/powermock上的 Powermock(这是一个非常酷的工具;)来模拟static
和final
方法(就像这个)甚至方法。private
您可以将它与 Mockito 一起使用,如Mockito wiki 文章中所述。在那里你会找到一些有用的例子。