Как заставить Haskell QuickCheck 2.4 увеличить # тесты? - PullRequest
26 голосов
/ 14 ноября 2011

Хорошо, как я узнал из моего предыдущего вопроса , книга RWH уже устарела для QuickCheck. И, несмотря на все прочитанные мной посты, в которых рассказывается, как невероятно просто использовать QuickCheck, я не могу найти места, в котором рассказывалось бы, как изменить количество тестов для запуска свойства.

RWH говорит:

handyCheck limit = check defaultConfig {
                     configMaxTest = limit
                   , configEvery   = \_ _ -> ""
                   }

Как это сделать с помощью QuickCheck 2.4? Что еще более важно, как бы я узнал сам? Пожалуйста, не говорите мне, что я должен был это выяснить из документации API.

Ответы [ 2 ]

48 голосов
/ 14 ноября 2011

Вы ищете:

quickCheckWith stdArgs { maxSuccess = 5000 } someProp

Как я узнал

  1. Я перешел к документации API .
  2. Вторым, что я увидел после quickCheck, был тип Args с полем maxSuccess.
  3. Я не хотел писать все поля, поэтому я искал значение типа Args - находя stdArgs. (Используйте функцию поиска в вашем браузере - обычно Ctrl-F). ОТО, я мог бы использовать hoogle .
  4. Мне нужно было где-то использовать свой тип Args, поэтому я продолжал искать. Следующая строка была quickCheckWith - бинго! С другой стороны, я мог бы использовать hoogle .

Как еще вы можете узнать

Как я уже говорил выше, вы могли бы использовать hoogle, чтобы найти множество функций, предполагая, что вы понимаете, что тип Args является ядром того, что вам нужно (из пикши).

В противном случае вам, вероятно, придется посмотреть, что делают другие пакеты, а это значит, что вам нужно знать, на какие другие пакеты стоит обратить внимание. Папка examples в QuickCheck кажется очевидной, но не во всех пакетах есть такие примеры. Используя обратные зависимости , вы часто можете найти пакет для просмотра, но для QC многие пакеты не имеют явных зависимостей.

3 голосов
/ 03 марта 2016

Для тех, кто хочет запустить все тесты сразу и указать их конфигурацию:

return []
main = $forAllProperties (quickCheckWithResult stdArgs { maxSuccess = 500 })
...