scalacheck - 当第二个参数的生成依赖于第一个参数时,如何编写带有两个参数的测试?

标签 scalacheck

我如何为第二个参数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/

相关文章:

scala - ScalaCheck 中 Prop.delay 的正确用途是什么

scala - ScalaCheck 之前/之后/前后?

ScalaCheck 生成 StackOverflowError

scala - 如何增加 scalacheck 控制台输出的字符列宽?

java - 为什么 gradle 命令行不显示 specs2 结果?

scala - Gen.sequence 忽略给定 Traversable 的大小

scala - 为什么 scalacheck 中需要 Arbitraries?

scalacheck 任意隐式和递归生成器

scala - 在 scalacheck 属性中使用规范匹配器

scala - 在ScalaCheck中生成选项[T]