如何使用Scalacheck的Specs2自动测试String参数?
Scala重写的
specs2测试框架集成了
scalacheck的自动化测试.在specs2文档中给出的示例如何使用scalacheck与specs2
use integers或更复杂的自定义生成器,如
eric’s json example所示.
在尝试得到一个稍微复杂的例子工作时,我很挣扎,因为我不知道如何使用specs2和scalacheck如果我想生成String参数而不是整数.这个Quickstart的例子呢 import org.scalacheck._ 取自scalacheck homepage的外观,如果是使用scalacheck集成写成Specs2规范? 解决方法
一个非常直接的翻译是使用检查方法和简单的功能:
package test import org.specs2._ import org.scalacheck._ class ScalaCheckExamples extends Specification with ScalaCheck { def is = "startsWith" ! check { (a: String,b: String) => (a+b).startsWith(a) } ^ "endsWith" ! check { (a: String,b: String) => (a+b).endsWith(b) } ^ "concat" ! check { (a: String,b: String) => (a+b).length > a.length && (a+b).length > b.length } ^ "substring" ! check { (a: String,b: String) => (a+b).substring(a.length) == b } ^ "substring" ! check { (a: String,a.length+b.length) == b } ^ end } 而输出实际上表明concat属性是不正确的: [info] + startsWith [info] + endsWith [error] x concat [error] A counter-example is ['',''] (after 0 try) [error] the value is false [error] (ScalaCheckExamplesSpec.scala:6) [info] + substring [info] + substring [info] [info] Total for specification ScalaCheckExamplesSpec [info] Finished in 7 seconds,547 ms [info] 5 examples,401 expectations,1 failure,0 error [info] 埃里克. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |