verboseCheck in QuickCheck 2?
-
22-09-2019 - |
Domanda
Il verboseCheck
funzione dal QuickCheck 1 sembra essere assente in QuickCheck 2 (o almeno, non riesco a trovarlo). C'è un altro modo per mostrare che i valori vengono utilizzati durante i test?
Soluzione
Sembra verbose
(e altre funzioni verbose
-) sono stati restituiti di nuovo a QuickCheck nella versione 2.4
Altri suggerimenti
La funzione sample
è anche utile:
Prelude Test.QuickCheck
ghci> sample (arbitrary :: Gen String)
""
")\223"
"(\227\&5F"
"\DC1"
"\136'\140\180\FS"
"K\DC2\NUL\CAN\253Q"
"\DC4\f\184&.\DC3\159\&1I\160j\147"
....
In questo modo, è facile giocare con le istanze arbitrarie, e assicurarsi che essi generano ciò che si pensa che esse generano.
Sì, questo sembra essere una regressione funzionalità rispetto alla QuickCheck 1.
È possibile lavorare intorno ad esso annotando le vostre proprietà con una dichiarazione Debug.Trace.trace, però. Qualcosa di simile:
import Debug.Trace
prop_eq xs = traceShow xs $
xs == reverse (reverse xs)
Sono stato felice con
import Debug.Trace
verboseCheck prop = quickCheck (\input -> traceShow input $ prop input)
Ho preso uno sguardo a fonti, e sembra che Args
stati refactoring, configEvery
non c'è più, e quindi non si è in grado di stampare tutti i valori del test, senza l'applicazione di patch fonti QuichCheck