Sie sind der erste, der nach einer solchen Funktion fragt. Eine Möglichkeit, dies zu erreichen, ist withClue. Etwas wie:
withClue("NumberOfElements: ") { NumberOfElements() should be (5) }
Das sollte Ihnen diese Fehlermeldung bringen:
NumberOfElements: 10 war nicht gleich 5
Wenn Sie die Nachricht vollständig steuern möchten, können Sie einen benutzerdefinierten Matcher schreiben. Oder Sie könnten eine Behauptung wie diese verwenden:
assert(NumberOfElements() == 5, "NumberOfElements should be 5")
Können Sie näher auf Ihren Anwendungsfall eingehen? Warum ist 10 nicht gleich 5 ist nicht bis zum Schnupftabak, und wie oft hatten Sie dieses Bedürfnis?
Folgendes fordern Sie an:
scala> import org.scalatest.matchers.ShouldMatchers._
import org.scalatest.matchers.ShouldMatchers._
scala> withClue ("Hi:") { 1 + 1 should equal (3) }
org.scalatest.TestFailedException: Hi: 2 did not equal 3
at org.scalatest.matchers.Matchers$class.newTestFailedException(Matchers.scala:150)
at org.scalatest.matchers.ShouldMatchers$.newTestFailedException(ShouldMatchers.scala:2331)
scala> class AssertionHolder(f: => Any) {
| def withMessage(s: String) {
| withClue(s) { f }
| }
| }
defined class AssertionHolder
scala> implicit def convertAssertion(f: => Any) = new AssertionHolder(f)
convertAssertion: (f: => Any)AssertionHolder
scala> { 1 + 1 should equal (3) } withMessage ("Ho:")
org.scalatest.TestFailedException: Ho: 2 did not equal 3
at org.scalatest.matchers.Matchers$class.newTestFailedException(Matchers.scala:150)
at org.scalatest.matchers.ShouldMatchers$.newTestFailedException(ShouldMatchers.scala:2331)
So können Sie schreiben:
{ NumberOfElements() should be (5) } withMessage ("NumberOfElements:")
Neuer Weg seit 2011:
Matchers
undAppendedClue
Eigenschaften. Für Sammlungsgrößen gibt es außerdem einige Standardnachrichten.Die Ausgabe sieht folgendermaßen aus:
Beachten Sie, dass die
List
Größenmeldung für Listen mit langer.toString
Ausgabe nicht geeignet ist .Weitere Informationen finden Sie im Scaladoc .
quelle
Sie können auch verwenden,
withClue
ohne etwas zu importieren oder zur Testklasse hinzuzufügen:Dies wird aus der
Assertions
Klasse importiert :org.scalatest.Assertions#withClue
quelle