【发布时间】:2017-06-12 15:43:32
【问题描述】:
延迟生成器可能对递归数据结构有意义。我想知道Prop.delay 在哪种情况下会有所帮助。能否请您演示一个现实生活中的例子。
【问题讨论】:
标签: scala quickcheck scalacheck property-based-testing
延迟生成器可能对递归数据结构有意义。我想知道Prop.delay 在哪种情况下会有所帮助。能否请您演示一个现实生活中的例子。
【问题讨论】:
标签: scala quickcheck scalacheck property-based-testing
我想知道这个 Prop.delay 在什么情况下会有所帮助。 能否请您演示一个现实生活中的例子。
假设您正在 Scalacheck 中为基于属性的测试套件编写扩展,并希望用户构建他们的属性,而您的扩展需要属性但不应该立即执行它们。
实际上,Scalacheck 在内部使用Prop.delay 构造属性来允许用户使用Properties trait/superclass 定义测试。
class BadExample extends Properties("Bad example") {
property("divide by 0") = {
Prop.forAllNoShrink { x: Int =>
x / 0 == 0 // No!
}
}
}
这会收集属性,以便测试运行程序(作为应用程序或通过 sbt)执行它们
sealed class PropertySpecifier() {
def update(propName: String, p: => Prop) = {
props += ((name+"."+propName, Prop.delay(p)))
}
}
private val props = new scala.collection.mutable.ListBuffer[(String,Prop)]
lazy val property = new PropertySpecifier()
【讨论】: