QuickCheck 2有哪些新function?

QuickCheck 1和QuickCheck 2的主要区别是什么? 从查看Haddock文档,我可以看到它分成了更多的模块, coarbitrary已经被新的Funtypes和FunArbitrary类(这似乎更容易理解)替代,现在支持testing一元代码。 还有什么我应该知道的?

我已经看到了QuickCheck 2的一个重大进步,我认为和一元代码testing一样重要,如果不是更多的话:

 class Arbitrary a where arbitrary :: Gen a shrink :: a -> [a] 

真的很棒 收缩方法是可选的,但是如果你可以提供一个“可能为空”的types减less列表,那么当QuickCheck发现一个错误的检查时,它会尝试缩小你的错误数据到最小, – testing它。 只要失败,它就会缩小。

一个小样本来说服你,不缩水:

 FormulaPrim deparsing : *** Failed! Falsifiable (after 4 tests): Poly (Polynome "p" [(CoeffRatio (26 % 25),PolyRest (CoeffRatio (129 % 40))),(CoeffInt 96,PolyRest (CoeffInt 11)),(CoeffInt 29,PolyRest (CoeffRatio (147 % 121))),(CoeffRatio (62 % 9),PolyRest (CoeffRatio (90 % 43))),(CoeffInt 56,PolyRest (CoeffInt 27))]) 

带有:

 FormulaPrim deparsing : *** Failed! Falsifiable (after 2 tests and 3 shrinks): Poly (Polynome "t" [(CoeffInt 14,PolyRest (CoeffInt 126))]) 

更短的失败示例意味着更快的debugging:-)