Ich versuche ScalaTest mit ScalaCheck zu verwenden, um eigenschaftsbasiertes Testen durchzuführen.ScalaCheck nicht fehlgeschlagen?
import org.scalatest.prop.PropertyChecks
import org.scalatest.{FlatSpec, Matchers}
object Calc {
def add(a:Int, b:Int) = a+b
def div(a:Int, b:Int) = a/b
}
class PropSpec1 extends FlatSpec with Matchers with PropertyChecks {
behavior of Calc.getClass.getName
it should "add integers" in {
forAll { (a: Int, b: Int) =>
Calc.add(a, b) shouldEqual a + b
}
}
it should "divide integers" in {
forAll {
(a:Int, b:Int) => Calc.div(a, b) shouldEqual a/b
}
}
}
Nun, was ich sehe, ist, dass, wenn ich halte die Tests in PropSpec1 immer und immer wieder ausgeführt wird, manchmal der zweite Test bestanden wird, aber die meiste Zeit ist es nicht: Ich habe die Tests unten beschrieben habe. Nun, wenn 0 nicht für b getestet wird, dann wird es offensichtlich passieren, aber ich hätte gedacht, dass es eines der Dinge ist, die es immer versuchen würde. Ich sehe das gleiche Verhalten beim wiederholten Ausführen von sbt clean test; manchmal gehen beide Tests.
Ist das für eigenschaftsbasierte Tests normal, oder muss ich etwas tun (wie immer meinen eigenen Generator zur Verfügung stellen)?
Danke ... Ich weiß über wann. Ich bin eher daran interessiert, Edge-Cases zu versuchen oder zumindest zu sagen, dass ich daran denke, 0 zu versuchen (was in diesem Fall keinen Sinn ergibt, aber ein allgemeineres Problem ist). Gibt es dafür etwas? – ashic
Nach meinem Wissen müssen Sie einen benutzerdefinierten Generator bereitstellen. Es könnte einen anderen Weg geben, vielleicht wird jemand anderes hereinspielen. –