verboseCheck в QuickCheck 2?
-
22-09-2019 - |
Вопрос
Функция verboseCheck
из QuickCheck 1, похоже, отсутствует в QuickCheck 2 (по крайней мере, я не могу его найти).Есть ли другой способ показать, какие значения используются во время тестирования?
Решение
Выглядит как verbose
(и другие verbose
- функции) были возвращены обратно в QuickCheck в версии 2.4.
Другие советы
А 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)
я был доволен
import Debug.Trace
verboseCheck prop = quickCheck (\input -> traceShow input $ prop input)
Я посмотрел источники, и кажется, что Args
были реорганизованы, configEvery
его больше нет, и поэтому вы не можете распечатать все тестовые значения без исправления источников QuichCheck.