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