簡體   English   中英

我如何模擬Object.getClass?

[英]How do I mock 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來模擬它。

你可以在https://github.com/powermock/powermock上模擬staticfinal方法(就像這個)甚至private方法和Powermock(它是一個非常酷的工具;)。

您可以將其與Mockito一起使用,如Mockito wiki文章中所述 在那里你會發現一些有用的例子。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM