Функция verboseCheck
от QuickCheck 1, кажется, отсутствует в QuickCheck 2 (или по крайней мере, я не могу найти его). Там какой-либо другой путь состоит в том, чтобы показать, какие значения используются во время тестирования?
Я просмотрел исходники, и кажется, что Args
были отредактированы, configEvery
больше не существует , и, таким образом, вы не можете распечатать все тестовые значения без исправления исходных кодов QuichCheck
Функция sample
также полезна:
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"
....
Таким образом, легко поиграться с вашими произвольными экземплярами и убедиться, что они генерировать то, что, по вашему мнению, они производят.
Да, похоже, это регресс функциональности по отношению к QuickCheck 1.
Однако вы можете обойти это, аннотировав свои свойства с помощью оператора Debug.Trace.trace. Что-то вроде:
import Debug.Trace
prop_eq xs = traceShow xs $
xs == reverse (reverse xs)