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

标签 scala quickcheck scalacheck property-based-testing

延迟生成器对于递归数据结构可能有意义。我想知道这个 Prop.delay 在什么情况下会有所帮助。您能举一个现实生活中的例子吗?

最佳答案

I'm wondering in which situation this Prop.delay could be helpful. Could you please demonstrate a real life example.

假设您正在 Scalacheck 中为基于属性的测试套件编写扩展,并希望用户构建其属性,并且您的扩展需要属性,但不应立即执行它们。

实际上,Scalacheck 在内部使用 Prop.delay 构造属性,以允许用户使用 Properties 特征/父类(super class)定义测试。

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()

关于scala - ScalaCheck 中 Prop.delay 的正确用途是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41885844/

相关文章:

haskell - 是否可以在 QuickCheck 中生成任意函数

scala - ScalaCheck Arbitrary[T] 和 Scalacheck Gen[T] 的区别

scala - 如何在加特林中的 StringBody() 中给出随机字符串?

scala - Play Framework Scala : routes with optional parameters not working in controller subpackages?

java - 你在实际项目中使用过 Quickcheck

haskell - 如何快速检查 Enum 和 Bounded 类型的所有可能情况?

scala - 如何缩小列表但保证它不为空?

eclipse - 将 scalacheck 与 Propspec 和 PropertyCheck 一起使用时,如何让 ScalaTest 正确报告测试结果?

scala - 如何创建我的项目可以依赖的自定义 scalafmt 样式?

java - Kubernetes 上的 Akka 集群心跳延迟