【问题标题】:Scalacheck/Scalatest with parametric types具有参数类型的 Scalacheck/Scalatest
【发布时间】:2014-12-29 09:31:10
【问题描述】:

我想用 scalatest 和 scalacheck 测试一个通用堆栈。到目前为止,我有这个:

"Stack" should "pop the last value pushed" in {
  check(doPushPop(element))
}

def doPushPop[T](element : T) : Boolean = {
  val stack = new Stack[T]
  stack.push(element)
  stack.pop() == element
}

但是这显然不能编译。如何将泛型类型指定为测试的一部分?

【问题讨论】:

    标签: scala scalatest scalacheck parametric-polymorphism


    【解决方案1】:

    如果你想生成随机值,例如整数:

    check(doPushPop(_: Int))
    

    但您不应使用单个值进行测试,而应生成一系列推送/弹出操作并验证一些不变量;堆栈显然不取决于您放入其中的值,所以我想说像上面那样进行如此微不足道的测试毫无意义。

    您应该改为阅读如何使用 ScalaCheck 测试有状态系统:

    http://www.scalacheck.org/files/scaladays2014/index.html

    【讨论】:

    • 我没有意识到有区别。感谢您的链接
    猜你喜欢
    • 2015-11-21
    • 2016-05-20
    • 2023-03-17
    • 1970-01-01
    • 2017-01-14
    • 2015-05-17
    • 2018-05-08
    • 2017-04-11
    • 1970-01-01
    相关资源
    最近更新 更多