Question

Quelles sont les principales différences entre QuickCheck 1 et 2 QuickCheck? De la recherche Haddock docs, je vois qu'il est réparti sur plusieurs modules, coarbitrary a été remplacé par le nouveau type de Fun et classe FunArbitrary (qui semble plus facile à comprendre pour moi), et tester le code monadique est maintenant pris en charge. Que dois-je savoir?

Était-ce utile?

La solution

Je l'ai vu une avancée majeure dans QuickCheck 2, je pense aussi important que les tests de code monadique, sinon plus:

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

, vraiment impressionnant. La méthode de retrait est facultative, mais si vous pouvez fournir une liste de « peut-être vide » réduction de votre type, puis quand QuickCheck trouver un chèque défectueux, il va essayer de réduire vos données erronées au minimum en essayant de le rétrécir et puis re -Essaye-le. Il rétrécit aussi longtemps qu'elle échoue.

Un petit échantillon pour vous convaincre, sans se rétracter:

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))])

Shorter échec exemple signifie plus rapide débogage: -)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top