myy*_*yyk 10 testing scala scalatest scalacheck
我有一个包含很多Scalacheck生成器的项目正在获取GeneratorDrivenPropertyCheckFailedException,并显示消息"在0次成功的属性评估后放弃.2个评估被丢弃了."
我想让它尝试评估它多次像500(默认值)会好,但我没有看到我的配置覆盖实际使用.
我将此代码添加到测试类中,我仍然得到完全相同的消息.我试过'sbt clean'只是为了确保那里没有发生奇怪的事情.
implicit override val generatorDrivenConfig = PropertyCheckConfig(minSuccessful = 1, maxDiscarded = 500, workers = 1)
Run Code Online (Sandbox Code Playgroud)
为什么我的Scalacheck/Scalatest PropertyCheckConfig被忽略了?
我正在使用Scalatest 2.2.1与Scalacheck 1.12.1和Scala 2.10.4
Ram*_*ony 16
如果要过滤生成器(例如,使用a suchThat
),则生成器可能会创建大量不满足suchThat
约束的值,因此会被丢弃.当我限制字符串的长度时,我遇到了这个问题.我可以给你的一个建议是尝试以不同的方式创建你的Gen,你不会丢弃这么多.
例如,这是我第一次生成4个字符的字符串:
val gen4CharString = Gen.listOfN(4, (Gen.listOfN[Char] suchThat (s => s != "" && s.length == 4)))
Run Code Online (Sandbox Code Playgroud)
这导致过多的生成值被丢弃,导致类似于您所看到的错误.如下改变发电机消除了这个问题.
val gen4CharString = Gen.listOfN[Char] (4, Gen.alphaChar).map (_.mkString)
Run Code Online (Sandbox Code Playgroud)