【问题标题】:How to see the values that scalacheck is generating?如何查看 scalacheck 生成的值?
【发布时间】:2014-11-01 19:15:02
【问题描述】:

我正在使用 scalatest 和 scalacheck 进行一些基于属性的测试。我对 scala 和这些库都是新手,所以假装这段代码没有实际那么难看。

我有一个这样的测试:

class MyTests extends FlatSpec with Checkers {

  "My Class" should "Do something interesting" in {
    check((e1 : String, e2 : String, e3 : String) =>
      doInterestingThing(e1, e2, e3))
   }

  def doInterestingThing(e1: String, e2: String, e3: String) : Boolean = {
    val myClass = new MyClass[String]
    val passed = myClass.Foo(e1, e2, e3)
    passed
  }
}

如何查看 scalacheck 生成的值?我目前正在运行这样的测试:

scala -cp "../lib/scalatest.jar:../lib/scalacheck.jar:." org.scalatest.run MyTests

但我得到的只是通过/失败输出。

【问题讨论】:

    标签: scala scalatest scalacheck


    【解决方案1】:

    怎么样:

    "My Class" should "Do something interesting" in {
      check { (e1: String, e2: String, e3: String) =>
        println(s"doInterestingThing($e1, $e2, $e3)")
        doInterestingThing(e1, e2, e3)
      }
    }
    

    作为旁注,您原始代码中的这一行:

    check((e1: String, e2: String, e3: String) => doInterestingThing(e1, e2, e3))
    

    可以改写为:

    check(doInterestingThing)
    

    【讨论】:

    • 我认为 scalacheck 可能有一个选项,但这也应该有效。谢谢
    • 如果你经常这样做,你可以轻松地创建一个帮助程序或宏来废弃这个样板。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-21
    • 2015-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多