Интеграция Haskell Cabal QuickCheck

Я пытался использовать cabal-install как способ сборки и, что более важно, тестирования моих проектов на haskell, немного похожий на то, как Maven используется в Java-проектах, главным образом потому, что он также кажется хорошим способом интегрировать в Jenkins или CI или около того, и это кажется очень надежным в том смысле, что вам не нужна среда разработки и т. д., настроенная для проверки и подтверждения того, компилируется ли код и корректен или нет.

В любом случае, я использую QuickCheck и HUnit для этого. В другом посте, посвященном обмену стеками, я нашел хороший способ интегрировать HUnit и cabal, используя функцию test в Distribution.TestSuite.HUnit для создания выставленного массива тестов в моем тестовом модуле. Работает.

Я пытался сделать тот же стиль настройки с QuickCheck,

    import qualified Distribution.TestSuite.QuickCheck2 as CabalQuickCheck

    alwaysFalseOneArg::Int->(Int,Int)
    alwaysFalseOneArg x = (x,x)

    quickCheckPropOneArg = \s->let (a,b)=alwaysFalseOneArg s  in a==b && a/=b

    cabalQCTest = CabalQuickCheck.test "test" quickCheckPropOneArg

    tests=cabalQCTest:[]

Я хочу, чтобы этот тест провалился.

У меня есть cabal-файл, который работает с настройкой HUnit, при этом тесты HUnit работают и дают сбой или не дают сбой, как следует. Однако, если я использую ту же настройку для выполнения тестов быстрой проверки, Кабал говорит мне, что он действительно нашел набор тестов, но в нем нет тестов. Я также попробовал подход, упомянутый на сайте Distribution.TestSuite.QuickCheck2, но там, похоже, не упоминается, как выставить тест, и мне не удается его запустить. Теперь я немного растерялся, я могу запускать эти тесты быстрой проверки с помощью самой быстрой проверки, но не с cabal, и я хотел бы иметь эту возможность, чтобы можно было быстро проверить все мои тесты и код и использовать его в Jenkins или около того. У кого-нибудь есть идея?

Я пытался предоставить всю информацию, которая, по моему мнению, необходима, без чрезмерных усложнений, поэтому я не опубликовал полный файл кабала и так далее, если это будет необходимо, я, конечно, сделаю это. Я нашел довольно много похожих постов, но большинство из них сводятся к использованию чего-то другого, кроме подробного 0,9, что было бы жаль, так как кажется, что он прекрасно работает с HUnit в качестве настройки, и я хотел бы использовать и HUnit, и QuickCheck таким же образом, конечно, предпочтительно выставлять один массив тестов, содержащий тесты HUnit и QuickCheck.

Kasper

1 ответ

Я согласен с isturdy: я бы определенно test-framework + test-framework-quickcheck2, Посмотрите этот пример того, как использовать их вместе в проекте. Обратите внимание на свойства под названием prop_*,

Вы также можете проверить проект haskell-minecraft-tool чтобы увидеть, как выглядит результат теста. Запустите тесты с

cabal configure --enable-tests && cabal build && cabal test

Посмотрите на .cabal файл здесь, чтобы увидеть, какие пакеты требуются. А именно это test-framework, test-framework-quickcheck2, QuickCheck,

Другие вопросы по тегам