Состояние выхода QuickCheck при сбоях и интеграция клики

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

В руководстве пользователя также упоминается detailed-1.0 тестовый набор, но, НАСТОЯТЕЛЬНО, это не еще не существует. Это все еще так?

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

Меня как-то не устраивает эта ситуация.

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

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

person jberryman    schedule 23.01.2012    source источник


Ответы (2)


Глядя на реализацию quickCheck< /a>, он действительно никогда не выходит из программы. Однако вы можете легко реализовать это поведение, используя 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 пока все еще является рекомендуемым решением для тестирования.

person ehird    schedule 23.01.2012
comment
Я знаю, что прошло более 3 лет, но я потратил слишком много времени, пытаясь понять, что вам также нужно import Test.QuickCheck.Test, чтобы isSuccess попало в рамки. Если у кого-то тоже есть такая проблема. Кстати, есть ли способ сделать его красивее? (т.е. не нужно делать как import Test.QuickCheck, так и Test.QuickCheck.Test?) - person conrad; 19.03.2015
comment
@conrad Очевидно, в какой-то момент это было улучшено: isSuccess теперь находится в Test.QuickCheck. - person Ignat Insarov; 11.08.2019

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

person Paul Johnson    schedule 23.01.2012
comment
Спасибо за пример, думаю, я пойду по этому пути. - person jberryman; 24.01.2012