重新编写的Scala specs2测试框架将自动化测试与scalacheck集成。在specs2文档中给出的示例中,介绍了如何使用scalacheck和specs2进行测试,可以使用整数或者像eric的json示例中那样使用更复杂的自定义生成器。
当我尝试使用一个稍微简单一些的示例时,我遇到了困难,因为我不知道如果我想要生成字符串参数,应该如何使用specs2和scalacheck。这个Quickstart示例会怎样呢?
import org.scalacheck._
对象StringSpecification扩展了属性("String") { 属性("startsWith") = Prop.forAll((a: String, b: String) => (a+b).startsWith(a)) 属性("endsWith") = Prop.forAll((a: String, b: String) => (a+b).endsWith(b)) // 这真的总是成立吗? 属性("concat") = Prop.forAll((a: String, b: String) => (a+b).length > a.length && (a+b).length > b.length ) 属性("substring") = Prop.forAll((a: String, b: String) => (a+b).substring(a.length) == b ) 属性("substring") = Prop.forAll((a: String, b: String, c: String) => (a+b+c).substring(a.length, a.length+b.length) == b ) } 取自scalacheck主页,如果使用scalacheck集成编写为Specs2规范,会是什么样子呢?