2014-03-07 12 views
14

Habe gerade angefangen mit ScalaTest und ich mag es sehr.In ScalaTest gibt es einen Unterschied zwischen `should`,` can`, `muss`

Mit nur the docs Lese habe ich bisher nicht in der Lage gewesen, um herauszufinden, ob es ein erheblicher Unterschied zwischen den can, should und must Klauseln für ein FlatSpec.

Insbesondere frage ich mich, ob eine must Fehler wird anders als eine should eine behandelt - oder es ist nur "syntaktischer Zucker", um die Tests besser selbst dokumentiert zu machen.

Antwort

15

should und must sind semantisch gleich. Aber es geht nicht um bessere Dokumentation, es ist im Grunde nur auf persönliche Stilpräferenz (Ich bevorzuge must zum Beispiel).

can ist ein wenig anders. Sie können (nomen omen) es nicht direkt als Matcher verwenden, es ist nur in einem Testdeskriptor verfügbar. Zitat aus FlatSpec:

Hinweis: Sie können verwenden oder können so gut wie sollte in einem FlatSpec. Für Beispiel sollte, anstatt sie „Pop ..., könnte man schreiben muss“ pop ... oder es kann „pop ....

(das gleiche gilt für WordSpec und der two gilt corresponding Befestigungsklassen)

Beachten Sie, dass für eine kurze Zeit (in ScalaTest 2.0.x glaube ich), die Verwendung von must veraltet wurde jedoch in 2.1.0, die Entscheidung has been reverted:

Resurrected MustMatchers in Paket org.scalatest anale Ablehnungs Warnung für org.scalatest.matchers.MustMatchers zu empfehlen mit org.scalatest.MustMatchers anstelle von org.scalatest.Matchers, die war der Vorschlag in 2.0. Entschuldigung, müssen Benutzer, die auf migriert haben, bereits beim Upgrade auf 2.0.

+1

Danke dafür, geschätzt. Es wäre schön, wenn ein solcher Absatz zum Beispiel im Handbuch Erste Schritte erscheinen würde. (Der Ursprung meiner Verwirrung lag vermutlich darin, dass ich mit der RFC-Dokumentation vertraut bin, wobei SOLL und MUSS semantisch verschieden sind). – Marco

+0

@Marco: Gern geschehen :). Ja, es kann auf den ersten Blick verwirrend sein (auch wenn die Dokumentation in Fairness immer mit einem Geschmack übereinstimmt). Es sollte eine explizitere Aussage in den Dokumenten geben, stimme ich zu. Außerdem müssen Sie daran denken, das eine oder das andere konsistent zu verwenden - das Mischen in einem Testfall/in einer Testumgebung wird wahrscheinlich Verwirrung stiften. –

+4

Ich werde der Dokumentation eine Klarstellung hinzufügen. Der Unterschied zwischen sollte und muss ScalaTest-Benutzer zuvor verwirrt haben, und das war ein Grund, warum ich versuchte, MustMatchers in 2.0 abzulehnen. Der andere war, dass ich später "reine Behauptungen" hinzufügen möchte, und denke, dass sie anders aussehen sollten, also würde ich "muss" wiederverwenden. Ein paar Benutzer haben verlangt, dass "muss" zurück mit "will" für rein vorgeschlagen werden. Wie Tomato gesagt hat, sollte und muss ScalaTest das Gleiche tun, aber manche Benutzer fühlen sich semantisch nicht gleichwertig. Ich empfehle Ihnen, ein Verb zu wählen und es konsequent zu verwenden. –

Verwandte Themen