Mam klasę https://github.com/JonkiPro/popcorn/blob/develop/popcorn-common/src/main/java/com/jonki/popcorn/common/dto/Contribution.java, która dziedziczy z https://github.com/JonkiPro/popcorn/blob/develop/popcorn-common/src/main/java/com/jonki/popcorn/common/dto/BaseDTO.java. Chcę stworzyć test dla porównania wartości z hash code dla kilku obiektów.
@Test
public void canUseHashCode() {
final Contribution.Builder builder = new Contribution.Builder(
MOVIE_ID,
MOVIE_TITLE,
OWNER,
STATUS,
FIELD,
SOURCES,
CREATION_DATE
);
builder.withUserComment(null);
builder.withVerificationDate(null);
builder.withVerificationUser(null);
builder.withVerificationComment(null);
builder.withId(RandomSupplier.STRING.get());
final Contribution contribution1 = builder.build();
final Contribution contribution2 = builder.build();
builder.withId(RandomSupplier.STRING.get());
final Contribution contribution3 = builder.build();
Assert.assertEquals(contribution1.hashCode(), contribution2.hashCode());
Assert.assertNotEquals(contribution1.hashCode(), contribution3.hashCode()); // tutaj jest błąd, bo wskazuje, że wartości są takie same
}
po uruchomieniu testu otrzymuję błąd
java.lang.AssertionError: Values should be different. Actual: -1997596065
Nie wiem dlaczego, skoro pole id
jest zmienione dla trzeciego obiektu, to dlaczego hashCode jest taki sam?