官方scalacheck文档提供了以下示例:
property("stringLength") = Prop.forAll { s: String =>
val len = s.length
(s+s).length == len+len
}
我读到这也可以写成:
val stringLength = Prop.forAll { s: String =>
val len = s.length
(s+s).length == len+len
}
如何运行第二种形式的测试代码?当我执行sbt test
时,第二个版本没有任何反应。
答案 0 :(得分:0)
问题是第二个版本只是声明一个val,它包含对相关属性的引用,但这还不足以让scalacheck对其进行评估。这种声明属性的方式很有用,例如,如果要从其他基本属性中组合新属性。您可以直接检查它或为其分配特殊属性设置器,以便在测试运行中对其进行评估:
val stringLength = Prop.forAll { s: String =>
val len = s.length
(s+s).length == len+len
}
// invoke directly:
stringLength.check
// alternatively, just declare it the usual way
property("stringLength") = stringLength
这本身并不是很有用,它的使用方式可能是这样的:
property("composite") = Prop.all(stringLength, prop2, prop3, ...)