2017-12-02 17 views
0

assertEquals()を使用して2つのオブジェクトを比較する場合は、内部構造を調べることを検討します。オブジェクトのプロパティ?2つのオブジェクトのassertEquals()

私は次のようにクラスAがあるとします。その後、assertEquals()は何をするだろう、

public class A { 
    private int ID; 
    private String name; 
    private String address; 
} 

とされたオブジェクトの(つまりAのオブジェクトと比較する)性質が異なる順序であるとしましたか?それを他の方法で行う堅牢な方法はありますか?

+1

具体的なことは重要です。どの実装について話していますか?たとえば、どのようなパッケージなど? –

+0

もう少し詳しいことを教えてください。 –

+0

複数のassertEqualsがあります。あなたはどちらを取っていますか? –

答えて

2

@ジムガリソンはかなり正しいです - assertEquals()は、あなたのオブジェクトのequals()メソッドを呼び出すだけで同等性を判断します。あなたの質問に答えるために

、「それを他の方法を行うための強力な方法はありますか?」、 あなたが適切に何らかの理由で自分のクラスにequals()メソッドを実装することができない、とあなたが評価する場合フィールドの値に基づいてオブジェクトの等価性を確認するには、EqualsBuilder's reflectionEquals() methodを使用することを検討してください。かなり堅牢で、必要なフィールドを除外することができます。

はあなたの他の質問に答えるために、「 はのassertEquals()が何をするか、その後、提供されたオブジェクトのプロパティが異なる順序であると仮定?」、それがどうなるの全ては、他のインスタンスで equals()メソッドを呼び出すです。たとえば、 assertEquals(a, b)を呼び出すと、最終的に a.equals(b)が呼び出されます。ただし、 assertEquals(b, a)に電話すると、最終的に b.equals(a)が呼び出されます。

私は役立つことを願っています。

+0

@entpnerd –

+0

npの説明をありがとうございます。お力になれて、嬉しいです。 :-) – entpnerd

2

Assert.assertEquals()は、クラス 'equals()を使用します。

クラスが深い比較を行うためにequals()をオーバーライドした場合、それが使用されます。 equals()を上書きしないと、同一性に基づいてObject#equals()が得られます。

つまり、あなたはequals()の意味を決める。

関連する問題