带参数类型的Scalacheck / Scalatest

时间:2014-11-02 17:24:11

标签: scala scalatest scalacheck parametric-polymorphism

我想用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
}

然而,这并没有明显的编译。如何将通用类型指定为测试的一部分?

1 个答案:

答案 0 :(得分:1)

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

check(doPushPop(_: Int))

但是不应该使用单个值进行测试,而是应该生成一系列推/弹动作并验证一些不变量;堆叠显然不依赖于你放入它们的值,所以我认为进行如上所述的微不足道的测试是没有意义的。

您应该阅读有关如何使用ScalaCheck测试有状态系统的信息:

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