Laden...

NUnit: Objektvergleich

Letzter Beitrag vor 17 Jahren 4 Posts 2.218 Views
NUnit: Objektvergleich

Hallo Leuts,

habe einen einfachen NUnit-Test, in dem u.a. zwei Objekte verglichen werden sollen:

Assertion.AssertEquals(Obj1,Obj2);

Die beiden Objekte sind vom Typ XMLDocument und identisch. Also, ich behaupte zumindest, daß die identisch sind X( - denn der Test sagt mir was anderes. Wobei ich die Fehlermeldung auch nicht ganz verstehe:

Expected: <MyNamespace.MyObject>
 But was:  <MyNamespace.MyObject>

Wo ist denn nun der Unterschied??

Wenn ich die beiden Objekte speichere, um sie direkt in Augenschein nehmen zu können, sehe ich zwei völlig identische Dateien.

Und außerdem:

Assertion.AssertSame(Obj1,Obj2);

funktioniert ebenfalls nicht, während

Assertion.Equals(Obj1,Obj2);

erfolgreich durchläuft.

Kann jemand das Brett vor meinem Kopf entfernen? Warum funktioniert Assertion.Equals, Assertion.AssertEquals aber nicht? 🤔

Umwege erhöhen die Ortskenntnis.

Ich rat nur mal:
Vergleichen Assert.AssertEquals und Assert.AssertSame die Referenzen und nicht die enthaltenen Objekte (d.h. ob die beiden Variablen auf exact das gleiche Objekt im Arbeitsspeicher verweisen)?
Probier einfach mal:


Assertion.AssertSame(Obj1,Obj1); 
Assertion.AssertSame(Obj2,Obj2); 
// und
Assertion.AssertEquals(Obj1,Obj1); 
Assertion.AssertEquals(Obj2,Obj2); 

Gibt es keine Dokumentation zu der Methode?

Hallo Bini,

auf jeden Fall scheint auch mir das Problem in dem Unterschied zwischen Gleichheit und Identität zu liegen. Da dies ein wichtiger(!) Unterschied ist, muss es für die Prüfung auch bei NUnit unterschiedliche Methoden geben. Und deine Auflistung an möglichen Methoden deutet das ja auch an. Wichtig ist, dass du dir diese Unterschiede genau klar machst, weil du sonst deine Tests alle (und nicht nur den hier, wo es dir aufgefallen ist) in der Pfeife rauchen kannst, wenn nämlich eigentlich etwas anderes geprüft wird als du erwartest bzw. tatsächlich verlangen willst.

herbivore

Hallo Herbivore,

der Unterschied zwischen Gleichheit und Identität ist mir durchaus bewußt. Und auch der zwischen Objekt- und Referenzvergleich. Ich habe alle Ergebnisse nur deshalb aufgelistet, um quasi mehr Anhaltspunkte zu liefern, und nicht, weil ich sie alle wild durcheinanderschmeiße 😉

Ich will zwei komplexe Objekte vergleichen, die identische Werte haben müssen, und habe jetzt auch die Stelle gefunden, an der sie sich unterscheiden.

Ich denke, ich krieg es jetzt hin. Der Mod kann den Beitrag ja wieder löschen, ist doch nicht so sehr ergiebig für die Allgemeinheit.

Umwege erhöhen die Ortskenntnis.