Diyelim ki, kaynağa sahip olmayan equals () yöntemi olmayan bir sınıfım var. Bu sınıfın iki örneğinde eşitlik olduğunu iddia etmek istiyorum.
Birden çok iddia yapabilirim:
assertEquals(obj1.getFieldA(), obj2.getFieldA());
assertEquals(obj1.getFieldB(), obj2.getFieldB());
assertEquals(obj1.getFieldC(), obj2.getFieldC());
...
Bu çözümü sevmiyorum çünkü erken bir iddia başarısız olursa tam eşitlik resmini elde edemiyorum.
Manuel olarak kendi başıma karşılaştırabilir ve sonucu takip edebilirim:
String errorStr = "";
if(!obj1.getFieldA().equals(obj2.getFieldA())) {
errorStr += "expected: " + obj1.getFieldA() + ", actual: " + obj2.getFieldA() + "\n";
}
if(!obj1.getFieldB().equals(obj2.getFieldB())) {
errorStr += "expected: " + obj1.getFieldB() + ", actual: " + obj2.getFieldB() + "\n";
}
...
assertEquals("", errorStr);
Bu bana tam bir eşitlik resmi veriyor, ancak hantal (ve olası boş problemleri bile hesaba katmadım). Üçüncü bir seçenek, Comparator'ı kullanmaktır, ancak CompareTo () hangi alanların eşitlikte başarısız olduğunu bana söylemeyecek.
Nesneden istediğimi alt sınıflara ayırmadan ve eşittir (ugh) geçersiz kılmadan elde etmek için daha iyi bir uygulama var mı?