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