Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有参数化类型的Scalacheck/Scalatest_Scala_Scalatest_Scalacheck_Parametric Polymorphism - Fatal编程技术网

带有参数化类型的Scalacheck/Scalatest

带有参数化类型的Scalacheck/Scalatest,scala,scalatest,scalacheck,parametric-polymorphism,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 } 然而,这显然不是

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

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

如果要生成随机值,例如int:

check(doPushPop(_: Int))
但是,与使用单个值进行测试不同,您应该生成一系列的push/pop操作,并验证一些不变量;堆栈显然不依赖于您输入到它们中的值,所以我要说,像上面这样一个简单的测试是没有意义的

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


我不知道有什么不同。谢谢你的链接