我有一个ScalaCheck的新手问题,我第一次玩这个问题。
是否可以创建一个Gen[Int]
,它将从0到N线性地进展。
这样当我在ScalaCheck中使用forAll
时,它会将输入Int
增加1。
我希望这个例子用增加值
进行测试"Increase" should "always increase" in {
forAll(validNumbers){ i:Int =>
increase(i) should be (i + 1)
}
}
也许这会破坏ScalaChecks的目的,我应该在ScalaTest中以这种方式进行测试。
答案 0 :(得分:1)
你可以这样做:
def validNumbers(n: Int): Gen[Int] = Gen.resultOf[Int, Int] {
new (Int => Int) {
val current = (0 to n).iterator
def apply(i: Int): Int = {
if(current.hasNext) current.next else sys.error("No more numbers")
}
}
}
但是我认为你确实是对的,这会破坏ScalaChecks的目的。在这种情况下,一个简单的for循环会做得更好。