Я получаю разные результаты при запуске модульных тестов с Eclipse JUnit и gradle test.Имея класс вроде:
@Getter @Setter
@EqualsAndHashCode
public class ObjectWithId {
private Long id;
}
и тест как (сжатые случаи в один тест для экономии места):
@Test
public void testObjectWithId() {
ObjectWithId o1 = new ObjectWithId(), o2 = new ObjectWithId();
o1.setId(1L);
o2.setId(1L);
assertEquals(o1.hashCode(), o2.hashCode());
assertEquals(o1, o2);
o2.setId(2L);
assertNotEquals(o1, o2);
assertNotEquals(o1.hashCode(), o2.hashCode());
}
все идет нормально, как и ожидалось.
Затем, имея такой класс, как:
@Getter @Setter
@EqualsAndHashCode(onlyExplicitlyIncluded = true)
public class ObjectWithIdAndDate {
@EqualsAndHashCode.Include
private Long id;
private LocalDateTime created;
}
с тестом, подобным:
@Test
public void testObjectWithIdAndDate() {
ObjectWithIdAndDate o1 = new ObjectWithIdAndDate(), o2 = new ObjectWithIdAndDate();
o1.setId(1L);
o2.setId(1L);
assertEquals(o1.hashCode(), o2.hashCode());
assertEquals(o1, o2);
o2.setId(2L);
assertNotEquals(o1, o2);
assertNotEquals(o1.hashCode(), o2.hashCode());
o2.setId(1L);
o2.setCreated(LocalDateTime.now());
// Eclipse JUnit starts failing here because setting the created.
// Gradle test will pass.
assertEquals(o1.hashCode(), o2.hashCode());
assertEquals(o1, o2);
o1.setCreated(LocalDateTime.now());
assertEquals(o1.hashCode(), o2.hashCode());
assertEquals(o1, o2);
}
, он завершится неудачно при работе с Eclipse JUnit, но завершится успешно с тестом gradle?Я запускаю тест gradle как из Eclipse, так и из командной строки, без разницы.Итак, похоже, что каким-то образом gradle знает лучше, как @EqualsAndHashCode(onlyExplicitlyIncluded = true)
следует относиться ...?
У меня compile 'org.projectlombok:lombok:1.18.2'
в моем build.gradle
и такая же версия lombok.jar установлена в моем Eclipse.
И Gradle Project, и Eclipse используют JUnit версии 4.12.Что мне здесь не хватает?
Некоторые дальнейшие исследования:
Я построил идентичный в остальном проект, но с Maven.К моему удивлению, тест JUnit также проходит с этим проектом.
Этот запах пахнет так, как будто что-то не так с фасетом град-проекта Eclipse или каким-либо другим специфическим параметром град-проекта?