0
我要創建一組擁有模擬的Java objects.Like以下如何將java模擬對象添加到哈希集?
MyObject objectA = mock(MyObject.class);
when(objectA.getName()).thenReturn("nameA");
MyObject objectB = mock(MyObject.class);
when(objectB.getName()).thenReturn("nameB");
MyObject objectC = mock(MyObject.class);
when(objectC.getName()).thenReturn("nameC");
Set<MyObject> mySet = new HashSet<>();
mySet.add(objectA);
mySet.add(objectB);
mySet.add(objectC);
mySet.size();// this will be "1" instead of "3"
我想集的大小爲「3」,而不是「1」。
我知道,當添加一個對象來設置它將驗證對象的哈希碼。在這種情況下,我所有的模擬對象都具有相同的散列碼,因此該設置只能保存一個值。
我也試過以下
int someRandomInt = 12345;
when(objectA.hashCode()).thenReturn(someRandomInt):
但失敗的Mockito來,踩滅私人最終方法。
我怎樣才能擁有一個擁有不同模擬對象的集合?
我試過了...對我來說它輸出'3'...順便說一句。您可以將具有相同哈希碼的不同對象放入哈希集合中......關於equals()方法,這些對象並不相同。 –
請分享整個代碼(MyObject) –
@Andre R你是對的。 MyObject類擴展了一個正在使用的抽象類,正在重寫哈希碼(我沒有意識到它)。感謝您的想法。 –