Pergunta

Quais são as principais diferenças entre o QuickCheck 1 e o QuickCheck 2? Ao olhar para os documentos de haddock, posso ver que está dividido em mais módulos, coarbitrary foi substituído pelo novo Fun tipo e FunArbitrary classe (que parece mais fácil de entender para mim) e testar o código Monadic agora é suportado. O que mais devo estar ciente?

Foi útil?

Solução

Eu já vi um grande avanço no Quickcheck 2, acho importante como o teste de código monádico, se não mais:

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

Isto é verdade incrível. O método de encolhimento é opcional, mas se você puder fornecer uma lista de redução "possivelmente vazia" do seu tipo, quando o QuickCheck encontrar uma verificação defeituosa, ele tentará reduzir seus dados defeituosos ao mínimo, tentando encolhê -lo e depois re - -teste-o. A encolher, desde que falhe.

Uma pequena amostra para convencê -lo, sem diminuir:

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

Com :

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

Exemplo de falha mais curta significa depuração mais rápida :-)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top