我如何为第二个参数someBoundedInt写一个生成器,它将在为minmaxBound生成的值之间随机生成一个Int?
val boundedIntProperty = forAll {
(minmaxBound: (Int,Int), someBoundedInt: Int) =>
minmaxBound._1 <= someBoundedInt && someBoundedInt <= minmaxBound._2
}
最佳答案
您可以像下面这样嵌套对forAll
的调用:
val boundedIntProperty = forAll { (minBound: Int, maxBound: Int) =>
forAll( Gen.choose(minBound, maxBound) ) { someBoundedInt =>
...
}
}
请注意,上面的
minBound
有时可能大于maxBound
,这会使Gen.choose
失败(不产生值)。因此,您可能也想以一种更智能的方式生成边界。
关于scalacheck - 当第二个参数的生成依赖于第一个参数时,如何编写带有两个参数的测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21238490/