带参数类型的标量检查/标量测试



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

"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
}

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

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

check(doPushPop(_: Int))

但是,您不应该使用单个值进行测试,而是应该生成一系列推送/弹出操作,并验证一些不变量;堆栈显然不依赖于您放入其中的值,所以我想说,进行如上所述的琐碎测试是没有意义的。

相反,您应该阅读如何使用ScalaCheck:测试有状态系统

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

最新更新