除了一些随机值之外,我想让我的所有属性始终至少使用一组固定的特殊值进行测试.我想在我的生成器规范中定义它,而不是在使用该生成器类型的每个测试中定义.例如,如果我生成Ints,我希望我的生成器始终为每个测试用例生成至少0,1和-1.这可能吗?
我想出了迄今为止最好的是做一个大小发电机,其中最小的ñ大小对应于我ñ特殊情况.这是有问题的,至少因为当最大测试次数配置为低于max size参数时,不测试所有可能的大小.
Dan*_*ral 18
首先,存在已经是在Scalacheck偏置使0,1,-1,Int.MaxValue
并Int.MinValue
很可能除了对方作为选Int
值.所以,如果那是您的担心,请不要担心.同样,可能会生成空字符串.
但是,如果您想为其他内容重现此行为,请使用Gen.oneOf
或者Gen.frequency
,也许与其结合使用Gen.choose
.由于oneOf
和frequency
采取Gen
的参数,你可以用普通的发电机相结合的特殊情况.
例如:
val myArb: Arbitrary[Int] = Arbitrary(Gen.frequency(
1 -> -1,
1 -> 0,
1 -> 1,
3 -> Arbitrary.arbInt.arbitrary
))
Run Code Online (Sandbox Code Playgroud)
几乎是你所要求的,有50%几率的任意整数(这与我所说的偏见有关),以及-1,0和1各16.6%.
归档时间: |
|
查看次数: |
2450 次 |
最近记录: |