Ich muss zwei komplexe Objekte aktivieren, die sowohl primitive als auch n Ebenen von Objekten enthalten können. Also googelte ich und wählte eine Bibliothek unitils
. Aber ich habe Bedingung, dass ich sowohl die null und leere Zeichenfolge als gleich betrachten muss. Aber hier unterstützt es nur ReflectionComparatorMode.IGNORE_DEFAULTS
. Szenario:Wie zwei komplexe Objekte zu vergleichen und Null und leere Zeichenfolge zu ignorieren?
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);
}
Fehler:
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
Ich brauche eine Regel hinzuzufügen, die sowohl für null und leere Zeichenkette als gleich betrachten.
Gibt es eine mögliche Lösung für meine Situation.
Warum nicht einfach die vergleichbare Schnittstelle implementieren und Ihre eigene equals-Methode schreiben? – Gremash