2013-04-01 3 views
11

Ich arbeite an Unit Testing für mein aktuelles Projekt und stieß auf etwas Seltsames. Die .Net UnitTesting-Bibliothek verfügt über Assert.Equals und Assert.AreEqual. Die remarks für Assert.Equals sagen, Assert.AreEqual zu verwenden, um zwei Objekte zu vergleichen, gibt aber keinen Grund, warum dies über Assert.Equals zu tun ist. Kann jemand erklären, wann Sie Assert.Equals im Komponententest verwenden sollten, wenn überhaupt und den Unterschied zwischen Assert.Equals und Assert.AreEqual?Was ist die Verwendung von Assert.Equals?

+1

mögliche Duplikate von [Warum ist Microsoft.VisualStudio.TestTools.UnitTesting.Assert.Equals() vorhanden?] (Http://StackOverflow.com/questions/489117/why-does-microsoft-visualstudio-testtools-unittesting- assert-equals-exist) –

+1

Verstehst du zuerst, was Assert.Equals bedeutet oder bedeutet? es überprüft, um sicherzustellen, dass 2 'Objekte gleich sind' die '? ' macht Objects 'Nullable', wenn man beispielsweise mit' DateTime, int' herumspielt und versucht, etwas wie 'var myInt = null' zu setzen; es wird fehlschlagen aber 'var myInt setzen? = null; 'macht die Ganzzahl Nullable Dies sollte dazu führen, dass Sie Ihre eigene Frage zu beantworten – MethodMan

+0

noch wichtiger Ich denke, dass Sie fragen sollten, wenn Sie' .Equals' vs '==' Es gibt einen Unterschied .. man überprüft ' Objekte, während der andere überprüft "Werte" – MethodMan

Antwort

31

Assert.Equals ist nur die Equals Methode geerbt von object. Es hat nichts mit Unit-Tests zu tun, und in der Tat, hat keinen Nutzen.


Um genauer zu sein, Assert.Equals genau wie Object.Equals gleich ist. Object.Equals hat eine Verwendung.

Wenn Sie jedoch Assert.Equals verwenden, verwirren Sie es wahrscheinlich mit Assert.AreEqual, und Sie möchten es nicht mehr verwenden.

+3

"nichts mit Komponententests zu tun" - gut ... aber "in der Tat, hat keinen Nutzen" ist vielleicht irreführend. –

+2

Welchen Nutzen hat es? Instanzen der Assert-Klasse vergleichen? –

+0

Ich würde argumentieren, dass es keine Verwendung der Assert-Klasse, die statisch ist. –