18

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

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

但肯定没有做任何事情。getClass 的返回类型是什么,如何操作它?

4

2 回答 2

9

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

于 2012-10-30T14:01:35.440 回答
5

Object.getClass()是一种final方法,所以你不能用 Mockito 模拟它。

您可以使用https://github.com/powermock/powermock上的 Powermock(这是一个非常酷的工具;)来模拟staticfinal方法(就像这个)甚至方法。private

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

于 2012-10-30T14:04:24.967 回答