带有参数化类型的Scalacheck/Scalatest
我想用scalatest和scalacheck测试一个通用堆栈。到目前为止,我有:带有参数化类型的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 } 然而,这显然不是
"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测试有状态系统:
我不知道有什么不同。谢谢你的链接