2017-02-14 2 views
0

Ich finde die Assert Klassenmethoden eher verwirrend als hilfreich. Ich finde es besonders ärgerlich, dass Microsofts MSTest-Methoden erwarten (oder erfordern?), Dass ich Vergleiche rückwärts schreibe, d. e. der konstante/erwartete Wert zuerst und der variable/tatsächliche Wert der zweite. Dies steht im Gegensatz zur natürlichen Sprache und damit zu vielen Programmierrichtlinien für allgemeine Code-Vergleiche.Warum sollte ich die Methoden der Assert-Klasse verwenden?

Anstatt also diese:

Assert.AreEqual(5, value, "Value is not correct."); 

Was mit dieser falsch ist, mehr normal suchen Prüfvorschrift:

if (value != 5) Assert.Fail("Value is not correct."); 

Dies ist, was der gesamte Code aussieht. Es ist das, was jedes Auge des Programmierers trainiert, um es schnell zu sehen und zu verstehen. Und die anderen Assertionsmethoden können ebenso einfach in regulären Code geschrieben werden.

Mit C# 6 using static können Sie sogar den Assert. Teil weglassen.

Ich konnte keine Überlegungen dazu im Web und mit der Assert-Klasse Dokumentation finden.

+0

Kennen Sie [fließende Behauptungen] (http://www.fluentassertions.com/)? –

+0

Wechseln Sie einfach zu NUnit, XUnit oder einem anderen Einheitentestframework; persönlich finde ich die MSTest-Syntax ganz gut, nehme die ersten 10 Tests, um mich daran zu gewöhnen und dann alle süß. – zaitsman

+0

@ RenéVogt Wusste das nicht, und ich sehe keinen Sinn darin, Sprachfunktionen mit benutzerdefinierten Methoden zu verwerfen. Weniger lesbar für mich und überflüssige Dinge zu lernen. – ygoe

Antwort

7

In Assert.AreEqual(5, value, "Value is not correct."); die Nachricht, die Sie erhalten so etwas wie

5 enthalten Erwartete, bekam 3 statt

In if (value != 5) Assert.Fail("Value is not correct."); die Nachricht

Wert sein wird, ist nicht korrekt.

Witch ist viel weniger informativ, da Sie den Assertionsfehler nicht durch den Wert verursacht haben.

0

MSTest verwendet das sehr häufige AAA-Muster (arrange-act-assert). Ihre zweite Anweisung wird für jeden anderen Programmierer, der Erfahrung mit Komponententests hat, weniger lesbar sein. Außerdem müssen Sie im zweiten Fall zusätzliche Informationen angeben. Sie müssen Ihre Nachricht erweitern und die erwarteten und tatsächlichen Werte manuell angeben, was mehr Codierung erfordert und im ersten Fall vermieden werden kann.

Verwandte Themen