2016-03-31 2 views
0

プリミティブとnレベルの両方のオブジェクトを含む複雑なオブジェクトを2つ宣言する必要があります。だから私はgoogledとライブラリunitilsを選んだ。しかし、私は条件がnullと空の両方の文字列をequal.Butを考慮する必要があるここではReflectionComparatorMode.IGNORE_DEFAULTSをサポートしています。 シナリオ:どのように2つの複合オブジェクトを比較し、nullと空の文字列を無視するのですか?

public class AssertVerify { 

    public static void main(String args[]){ 

    CustomerPojo cuPojo1=new CustomerPojo(); 
    CustomerPojo cuPojo2=new CustomerPojo(); 

    cuPojo1.setCustomerName("obuli"); 
    cuPojo1.setCustomerAge("20"); 
    cuPojo1.setAddress(""); 

    cuPojo2.setCustomerName("obuli"); 
    cuPojo2.setCustomerAge("20"); 


    /** 
    * Asserting two pojos 
    */  
    ReflectionAssert.assertReflectionEquals(cuPojo1, cuPojo2, 
      ReflectionComparatorMode.LENIENT_DATES ,ReflectionComparatorMode.IGNORE_DEFAULTS); 

}  

エラー:

junit.framework.AssertionFailedError: 
Expected: CustomerPojo<customerName="obuli", customerAge="20", Address=""> 
    Actual: CustomerPojo<customerName="obuli", customerAge="20", Address=null> 

    --- Found following differences --- 
    Address: expected: "", actual: null 

    --- Difference detail tree --- 
    expected: CustomerPojo<customerName="obuli", customerAge="20", Address=""> 
    actual: CustomerPojo<customerName="obuli", customerAge="20", Address=null> 

    Address expected: "" 
    Address actual: null 


    at junit.framework.Assert.fail(Assert.java:47) 
    at  org.unitils.reflectionassert.ReflectionAssert.assertReflectionEquals(ReflectionA ssert.java:136)at  org.unitils.reflectionassert.ReflectionAssert.assertReflectionEquals(ReflectionA ssert.java:99) 
atcom.assertion.verify.AssertVerify.main(AssertVerify.java:52) 

picked up _JAVA_OPTIONS: -Djava.net.preferIPv4Stack=true 

は、私は同じように両方ともNULLと空の文字列を考え、ルールを追加する必要があります。

私の状況で利用可能な解決策はありますか?

+1

なぜ、同等のインターフェイスを実装し、独自のequalsメソッドを記述するだけではないのですか? – Gremash

答えて

0

としては、あなたは確かにあなたは、あなたがこのインターフェイスと使用を実装する独自のオブジェクトをコレクションに台無しに仕事を使用することができるときので、あなたがやって知っている作り、これを急いではいけない、comparableインタフェースを実装し、equalsメソッドをオーバーライドshoud Gremashで言及されましたあなたのメソッド。コアJava 1-2シリーズで(可能であれば)見て、この問題は、これらの本で説明され、詳細を説明します。インスタンスは同値関係を定義する必要があります)(等しいため はもっとその上で、(それは、反射的対称、かつ推移的でなければならない)いくつかのルールがあります:What issues should be considered when overriding equals and hashCode in Java?

は、私はその後、他のライブラリに依存しているこの道を行くために、そのまだ良いと思います。

関連する問題