QuickCheck выход из состояния при сбоях и интеграции кабальных - PullRequest
9 голосов
/ 23 января 2012

Я пытаюсь понять, как интегрировать некоторые тесты QuickCheck с Cabal.Этот gist предполагает, что функция quickCheck возвращает ненулевой статус при сбое, но я не получаю такого поведения, поэтому использование exitcode-stdio-1.0 типа комплекта тестов Cabal, похоже, не работает для меня, если толькоЯ хочу назвать error во всех моих тестах.

Руководство пользователя cabal также упоминает detailed-1.0 набор тестов, но AFAICT этого пока не существует.Это все еще так?

Из ответов вроде этого кажется, что многие люди используют пакет тест-фреймворка .Это для меня излишне, но это то, что я должен использовать?

Я остался недоволен этой ситуацией.

Версии вещей, которые я использую:

cabal-install version 0.10.2
using version 1.10.1.0 of the Cabal library
QuickCheck-2.4.1.1

Ответы [ 2 ]

13 голосов
/ 23 января 2012

Глядя на реализацию quickCheck , она действительно никогда не выходит из программы. Однако вы можете легко реализовать это поведение, используя quickCheckResult:

import Control.Monad
import Test.QuickCheck
import Test.QuickCheck.Test
import System.Exit

main :: IO ()
main = do
  result <- quickCheckResult prop
  unless (isSuccess result) exitFailure

Насколько я понимаю, detailed-1.0 пока не считается готовым для общего использования и что exitcode-stdio-1.0 до сих пор является рекомендуемым решением для тестирования.

6 голосов
/ 23 января 2012

Я использовал test-framework в последней версии моего десятичного пакета.Это не было излишним;он сделал именно то, что хотел.Взгляните на полный исходный код , если вам нужен пример того, как его использовать.

...