mhe*_*rzl 1 haskell quickcheck
我有一个quickCheck属性,它涉及为只有两个元素的和类型生成元素.
显然,对于这种情况,默认的测试用例数量100太多,因此我习惯withMaxSuccess将案例数量减少到3.这样运行得很快但由于两个原因并不理想.首先,运行的三个测试用例超过了所需的两个测试用例.其次,这三个案例并不全面,因为四分之一的机会都是三个相同的因素,而另一个则排除在外.
我已经尝试过QuickCheck的forAll修饰符,看起来它可能正在寻找我想要的东西,但运行的测试用例数仍然是100.
如果我有一个具有有限数量元素的类型作为QuickCheck测试的生成器,有没有办法设置QuickCheck通过每个元素运行一次来全面测试该属性?
要限定类型是否具有有限数量的元素,也许它可以由类Enum和Bounded类型限定.
不使用quickcheck怎么样?
> myNeatProperty x = (x == GT) || (x <= EQ)
> all myNeatProperty [minBound .. maxBound]
True
> lessNeatProperty x = x <= EQ
> all lessNeatProperty [minBound .. maxBound]
False
> -- Oh no! Can we have some counterexamples, please?
> filter (not . lessNeatProperty) [minBound .. maxBound]
[GT]
Run Code Online (Sandbox Code Playgroud)
因为你的空间是有限的,但不是那些情况Enum和Bounded,考虑使用universeF替代的[minBound .. maxBound].