2016-05-24 6 views
1

Einnahme dieses Beispiel direkt aus dem Benutzerhandbuch von Scalacheck:Scalacheck Ausführlichkeit

scala> import org.scalacheck.Prop.{forAll, BooleanOperators} 

scala> val propTrivial = forAll { n: Int => 
    | (n == 0) ==> (n == 0) 
    | } 

scala> propTrivial.check 
! Gave up after only 4 passed tests. 500 tests were discarded. 

Ich möchte den tatsächlichen Wert sehen, dass der Test verursacht scheitern. Ich habe einen ähnlichen Testfall in meinem Projekt, der eine ähnliche (nutzlose) Nachricht erzeugt.

Ich versuchte, die Ausführlichkeitsoption zu sbt Zugabe:

testOptions in Test += Tests.Argument(TestFrameworks.ScalaCheck, "-verbosity", "5") 

und versuchte auch

testOptions in Test += Tests.Argument(TestFrameworks.ScalaCheck, "-verbosity", "5") 

aber weder funktioniert die Eigenschaft wie der Aufruf. Ich kann keine Ausgabe mehr bekommen.

Antwort

1

In diesem Fall führte kein Wert dazu, dass der Test fehlschlug, aber ScalaCheck gab auf, weil er nicht genügend Werte zum Testen finden konnte. Deshalb heißt es 500 tests were discarded - es ist keine nutzlose Fehlermeldung, es sagt nur, dass die generierten Werte nicht mit Ihrer n == 0 Vorbedingung übereinstimmen.

Wenn Sie mit einem Test versuchen, dass tut scheitern, wird es Ihnen den fehlerhaften Test sagen:

scala> forAll { n: Int => n > 0 } 
res0: org.scalacheck.Prop = Prop 

scala> res0.check 
! Falsified after 2 passed tests. 
> ARG_0: -2147483648 
+0

OK, ich glaube, ich habe es. Ich benutze ScalaCheck innerhalb von ScalaTest und ScalaTest muss denken, dass dies ein Fehler ist, obwohl es in Wirklichkeit nicht so ist .... – egbokul