【问题标题】:What is a proper use for Prop.delay in ScalaCheckScalaCheck 中 Prop.delay 的正确用途是什么
【发布时间】:2017-06-12 15:43:32
【问题描述】:

延迟生成器可能对递归数据结构有意义。我想知道Prop.delay 在哪种情况下会有所帮助。能否请您演示一个现实生活中的例子。

【问题讨论】:

    标签: scala quickcheck scalacheck property-based-testing


    【解决方案1】:

    我想知道这个 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()
    

    【讨论】:

      猜你喜欢
      • 2021-10-17
      • 2016-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-30
      • 2020-04-26
      相关资源
      最近更新 更多