Frage

Was sind die wichtigsten Unterschiede zwischen den Quick Check 1 und 2 Quick Check? bei Haddock docs von sucht, kann ich sehen, dass es verteilt auf mehr Module ist, coarbitrary wird durch die neue Fun Art und FunArbitrary Klasse ersetzt worden (was mir leichter zu verstehen scheint), und monadischen Code zu testen wird nun unterstützt. Was soll ich sonst noch beachten?

War es hilfreich?

Lösung

Ich habe in Quick 2 einen großen Fortschritt gesehen, ich glaube, so wichtig wie monadischen Code-Tests, wenn nicht mehr:

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

Dies ist wirklich genial. Die Schrumpfverfahren sind optional, aber wenn Sie eine Liste der „möglicherweise leer“ Reduzierung Ihrer Art zur Verfügung stellen können, dann, wenn Quickcheck eine fehlerhafte Überprüfung finden, wird es versuchen, Ihre fehlerhaften Daten auf das Minimum zu reduzieren, indem sie versuchen, es zu schrumpfen und dann wieder -Probier es aus. Es schrumpft es, solange es funktioniert nicht.

Eine kleine Probe, Sie zu überzeugen, ohne zu schrumpfen:

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

Mit:

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

Shorter scheitern Beispiel schneller debuggen bedeuten: -)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top