Sollte eine Überschreibung gleich Methode für das Objekt Gleichheit in einem Unit-Test zu behaupten?

StackOverflow https://stackoverflow.com/questions/1180044

Frage

Lassen Sie uns sagen, dass wir das Ergebnis einer Methode testen, indem die Gleichheit aller Eigenschaften des Ergebnisses Objekt mit Eigenschaften eines erwarteten Ergebnisobjekt geltend zu machen. Sollten wir implementieren Methode equals und Assert.AreEqual (expectedResult, actualResult) verwenden ... Aber gleich bedeuten kann, Produktionscode etwas anderes.

Welches ist die beste Praxis?

  • die Gleichheit der Objekte durch Geltendmachung außer Kraft gesetzt ist gleich Methode

oder

  • Bekräftigung der Gleichheit aller Eigenschaften
War es hilfreich?

Lösung

ich für eine Verwendung benutzerdefinierter Behauptungen. Es gibt zwei Hauptgründe:

  • nicht mit Gewalt Test Bedenken in der Produktion. Dies bedeutet, dass die Bedeutung des equals in einem Testverfahren nicht mit der Bedeutung für die Produktion Code übereinstimmen könnte;
  • entspricht möglicherweise nicht gut genug für alle Tests. Verschiedene Tests werden verschiedene Behauptungen erfordern, so dass Sie wahrscheinlich sowieso individuelle Aussagen am Ende mit.

Andere Tipps

Wenn Sie den Rückgabewert einer Methode oder Funktion sind testen, die einen Wert Objekt zurückgibt (sagen wir, einen Währungswert oder ein Tupel oder Karte), dann ist es sinnvoll zu prüfen, ob das Ergebnis Objekt zu einem erwarteten gleich Ergebnisobjekt. In diesem Fall sollte die Standardimplementierung von Gleichen tun, was Sie wollen.

Inzwischen, wenn Sie auf ein Objekt ein Mutator sind aufrufen und dann prüfen, ob es das Objekt als erwartet mutiert ist, denke ich, es mehr Sinn machen würde nur die Eigenschaften der Objekte zu überprüfen, die sollte sich geändert haben. Dies verhindert, dass Sie mit einer benutzerdefinierten Definition von Gleichen zu machen, die ohnehin verschleiern, was Sie im Test geschehen sein erwartet.

Ich glaube nicht, diese Frage etwas mit einer Standard-Art zu tun, Dinge zu tun. Es ist eine Frage des Denkens über das, was Ihr Test sollte Tests sein.

Wenn Sie testen wollen, dass alle Eigenschaften gleich sind, behaupten die Gleichheit aller Eigenschaften.

Wenn Sie den Rückgabewert des gesamten Objekts Equals Methode testen wollen, behaupten, dass statt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top