JUnit AssertEquals не работает

У меня есть код, который для следующего

import static org.junit.Assert.assertEquals;

System.out.println("obj1 name = " + obj1.getName());
System.out.println("obj1 value = " + (obj1.getvalue() == null ? "null" : "not null"));
System.out.println("obj2 name = " + obj2.getName());
System.out.println("obj2 value = " + (obj2.getvalue() == null ? "null" : "not null"));

assertEquals(obj2, obj1);

урожаи

obj1 name = DC2
obj1 value = null
obj2 name = DC2
obj2 value = null

java.lang.AssertionError: 
Expected :com.gms.contract.myClass.inventory.MyClass@795ce9b5
Actual   :com.gms.contract.myClass.inventory.MyClass@280cb0b4

Разве assertEquals не предполагает сравнение по значению?? Мне кажется, что он сравнивает адреса объектов. Но может я ошибаюсь?...

Спасибо!


person dushkin    schedule 02.10.2018    source источник
comment
Вам нужно переопределить equals в MyClass.   -  person Roman Konoval    schedule 02.10.2018


Ответы (1)


Разве assertEquals не предполагает сравнение по значению??

Нет, сравнивать надо методом equals.

Вам нужно переопределить equals в MyClass (и переопределить hashCode соответственно).

Мне кажется, что он сравнивает адреса объектов.

Нет, это просто результат вызова toString() для MyClass без переопределения вами. Если вы хотите, чтобы отображалось что-то более значимое, переопределите также toString().

person Andy Turner    schedule 02.10.2018