2016-03-31 14 views
0

İçinde hem ilkel hem de n düzeyindeki nesneleri içerebilen iki karmaşık nesne olduğunu iddia etmeliyim. Bu yüzden googled ve bir kitaplık seçti unitils. Ama ben hem boş hem de boş dizgiyi eşit olarak düşünmem gereken bir koşul var. Ama burada sadece ReflectionComparatorMode.IGNORE_DEFAULTS'u destekliyor. Senaryo:İki karmaşık nesneyi karşılaştırmak ve boş ve boş dizeleri yok saymak nasıl?

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); 

}  

Hata:

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 

Eşit olarak hem geçersiz ve boş bir dize düşünün bir kural eklemek gerekir.

Durumum için olası bir çözüm var mı?

+1

Neden benzer arabirimi uygulamıyorsunuz ve kendi eşitlik yönteminizi yazmıyorsunuz? – Gremash

cevap

0

olarak emin sen bu arayüzü ve kullanımı uygulamak kendi nesneler koleksiyonlarında pisliği işi kullanabilirsiniz ne zamandan beri ne yaptığını bilmek yapmak, bu acele yok, comparable arabirimini uygulayan ve equals yöntemini geçersiz sınırlandırmak Gremash tarafından bahsedildi Metodunuz: Core Java 1-2 serisine bir bakışın (mümkünse) bu sorun bu kitaplarda ele alınmakta ve açıklanacaktır. Örneğin bir denklik ilişkisini tanımlamak gerekir) (eşittir için daha bu konuda, (o dönüşlü simetrik ve geçişli olmalıdır) bazı kurallar vardır: What issues should be considered when overriding equals and hashCode in Java?

Sonra başka kütüphaneye itimat bu yoldan gitmeye onun hala iyi düşünüyorum .

İlgili konular