Видя ваш код, вы добавляете новый Employee
в свой ожидаемый список, давая этому объекту уникальную ссылку.Фактический список будет иметь другой экземпляр Employee
с другой уникальной ссылкой, создающей эти два разных объекта.
Хотя два объекта имеют одинаковые поля, список assertEquals
for будет использовать метод equals в Employee
, чтобы проверить, совпадают ли объекты.Если вы не реализовали метод equals
внутри Employee, он проверит те уникальные ссылки, о которых я упоминал ранее.
Решением было бы переопределить метод equals
в Employee
следующим образом:
@Override
public boolean equals(Object obj) {
if(!obj instanceof Employee) {
return false;
}
Employee e = (Employee) obj;
// Add more fields to compare if necessary
return this.getEmployeeId().equals(e.getEmployeeId()) && this.getAge().equals(e.getAge());
}
, который должен дать вам результаты, на которые вы надеетесь. Возможна похожая проблема и, возможно, лучшее объяснение.
Как уже упоминалось @Zabuza, вам также нужно переопределить hashCode
также в случае, если вы используете что-то вроде HashMap
в сочетании с Employee
.Дальнейшее объяснение `hashCode 'можно найти здесь .