Метод assertArrayEquals
- после обработки итерации и ряда других функций - в конечном итоге разрешается следующим вызовом:
expected.equals(actual)
Итак, он вызывает equals
в вашем классе User
, и так как вы этого не сделалиобъявил метод equals
, который делегирует реализации по умолчанию equals
в классе Object
, который сравнивает с помощью оператора равенства, т.е. сравнивает ссылки на объекты, а не их значение.
Итак, вызов assertArrayEquals
завершается вызовом:
actual[0] == expected[0]
И так как они не являются одним и тем же экземпляром, утверждение не выполняется.
Если вы хотите утверждать равенствомежду этими экземплярами User
тогда вам нужно будет дать некоторое определение того, что означает, что два экземпляра User
равны, т.е. определить метод equals
для User
.
Вотпример:
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
User user = (User) o;
return Objects.equals(name, user.name);
}
@Override
public int hashCode() {
return Objects.hash(name);
}
Если вы добавите вышеупомянутое в ваш класс User
, тогда ваш тест пройдет.