2017-02-23 8 views
0

私は以下のクラスを持っていますが、私のjUnit assertEquals()テストは機能しません。検索の日と無回答の後、私はここに投稿することに決めました。コード内のすべてが正しいように見えますが、まだ動作していません。JUnit Testing :: assertEquals()の問題

Contactクラス:

@Embeddable 
public class Contact { 

    @Column 
    private String name; 

    @Column 
    private String address; 

    @Column 
    private String phone; 

    public Contact(){ 
    } 

    public Contact(String name, String address, String phone) { 
     super(); 
     this.name = name; 
     this.address = address; 
     this.phone = phone; 
    } 

    public String getName() { 
     return name; 
    } 
    public void setName(String name) { 
     this.name = name; 
    } 

    public String getAddress() { 
     return address; 
    } 
    public void setAddress(String address) { 
     this.address = address; 
    } 

    public String getPhone() { 
     return phone; 
    } 
    public void setPhone(String phone) { 
     this.phone = phone; 
    } 

    public String toString() { 
     return "Contact [name=" + name + ", address=" + address + ", phone=" + phone + "]"; 
    } 

    @Override 
    public boolean equals(Object o){ 
     if(this == o){ 
      return true; 
     } 
     if(o == null){ 
      return false; 
     } 
     if(this.getClass() != o.getClass()){ 
      return false; 
     } 

     Contact contact = (Contact)o; 

     if(name != contact.getName()){return false;} 
     if(address != contact.getAddress()){return false;} 
     if(phone != contact.getPhone()){return false;} 

     return true; 
    } 

    @Override 
    public int hashCode() { 
     int result = name != null ? name.hashCode() : 0; 
     result = 31 * result + (address != null ? address.hashCode() : 0); 
     result = 31 * result + (phone != null ? phone.hashCode() : 0); 

     return result;   
    }  
} 

Orderクラス:私は私のテストを実行すると

@Entity 
public class Orders { 

    @Id 
    @GeneratedValue(strategy=GenerationType.IDENTITY) 
    private Long id; 

    @Embedded 
    @AttributeOverrides({ 
     @AttributeOverride(name="name", [email protected](name="weekday_recipient")), 
     @AttributeOverride(name="address", [email protected](name="weekday_address")), 
     @AttributeOverride(name="phone", [email protected](name="weekday_phone")), 
    }) 
    private Contact weekdayContact; 


    @Embedded 
    @AttributeOverrides({ 
     @AttributeOverride(name="name", [email protected](name="holiday_recipient")), 
     @AttributeOverride(name="address", [email protected](name="holiday_address")), 
     @AttributeOverride(name="phone", [email protected](name="holiday_phone")) 
    }) 
    private Contact holidayContact; 

    public Orders() { 
     super(); 
    } 

    public Long getId() { 
     return id; 
    } 

    public Contact getWeekdayContact() { 
     return weekdayContact; 
    } 
    public void setWeekdayContact(Contact weekdayContact) { 
     this.weekdayContact = weekdayContact; 
    } 

    public Contact getHolidayContact() { 
     return holidayContact; 
    } 
    public void setHolidayContact(Contact holidayContact) { 
     this.holidayContact = holidayContact; 
    } 

    public String toString() { 
     return "orders [WEEKDAY_CONTACT=" + this.getWeekdayContact().toString() + 
     ", HOLIDAY_CONTACT=" + this.getHolidayContact().toString() + "]"; 
    } 

    @Override 
    public boolean equals(Object o){ 
     // self check 
     if(this == o){ 
      return true; 
     } 
     // null check 
     if(o == null){ 
      return false; 
     } 
     //type check and cast 
     if(getClass() != o.getClass()){ 
      return false; 
     } 
     Orders orders = (Orders)o; 
     // field comparison 

     return Objects.equals(weekdayContact, orders.weekdayContact) 
       && 
       Objects.equals(holidayContact, orders.holidayContact); 


    } 

} 

テストクラス

public class Chapter3Test { 
    Contact weekdayContact = new Contact("Vienna", "Milkstreet 20", "+336598741"); 
    Contact holidayContact = new Contact("Cocos Island", "Gulay avenue 85", "+5589632147"); 
    Orders orders = new Orders(); 


    EntityManager em = EntitySessionManager.getEntityManager(); 


    @Before 
    public void setUp(){ 
     orders.setWeekdayContact(weekdayContact); 
     orders.setHolidayContact(holidayContact); 
     em.getTransaction().begin(); 
    } 

    @Test 
    public void createOrders() { 

     em.persist(orders); 

     em.getTransaction().commit(); 
     em.close(); 
    } 

    @Test 
    public void retrieveOrders(){ 
     em = EntitySessionManager.getEntityManager(); 
     em.getTransaction().begin(); 

     Orders myOrders = em.find(Orders.class, 2L); 

     assertEquals("They are not Equal", myOrders.getWeekdayContact(), orders.getWeekdayContact()); 
     assertEquals("They are not Equal", myOrders.getHolidayContact(), orders.getHolidayContact()); 

     em.getTransaction().commit(); 
     em.close(); 
    } 

    @After 
    public void closeResources(){ 
     //em.close(); 
    } 

} 

、私は次のような結果を得る::

java.lang.AssertionError: They are not Equal expected: chapter3.Contact<Contact [name=Vienna, address=Milkstreet 20, phone=+336598741]> but was: chapter3.Contact<Contact [name=Vienna, address=Milkstreet 20, phone=+336598741]> 

予想されたものと返されたものが同じであることがわかります。ここで

+0

事実の後、質問は私の答えにリンクされた質問にDUPと見なすことができました。私は問題を解決するために必要なすべての事柄について本当に素敵で完全な質問を載せることの信用をあなたに与えます! – GhostCat

答えて

3

private String name; 

しかし、その後、あなたのequalsメソッド内:

if(name != contact.getName()){return false;} 

あなたは==のRESPを持つ文字列を比較しています。 !=ここに。

間違っています(詳細についてはhereを参照)。代わりにname.equals(contact.getName())を使用してください!

それは間違っていますasssertEquals()ではありません。このメソッドは、の実装をequals()と呼び出します。したがって、結果がの場合、と表示された場合、の実装が壊れている必要があります。

そしてヒント:何も(。ESPの文字列)を比較は、彼らが同じを見ていることを信用していません。 唯一オブジェクトを作成するもの ... equals()メソッドの結果です。それ以外のものはではない数えます!

+0

ありがとう –

関連する問題