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

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

В любом случае, я использую для этого QuickCheck и HUnit. В другом сообщении здесь об обмене стеками я нашел хороший способ интегрировать HUnit и cabal, используя функциональный тест в 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 работают и терпят неудачу или нет, как должны. Однако, если я использую ту же настройку для выполнения тестов quickcheck, Cabal сообщает мне, что они действительно нашли набор тестов, но в нем нет тестов. Я пробовал подход, упомянутый в сайт из Distribution.TestSuite.QuickCheck2, но там, кажется, не упоминается, как открыть тест, и мне, кажется, не удается выполнить этот запуск. Я немного растерялся, я могу запускать эти тесты quickcheck с помощью quickcheck, но не с помощью Cabal, и я хотел бы иметь это, чтобы иметь возможность быстро проверять все мои тесты и код и использовать его в Jenkins или около того. Есть у кого-нибудь идея?

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

Каспер


person Kasper    schedule 23.02.2013    source источник
comment
Вот возможный пример: github.com/patperry/ hs-monte-carlo / blob / master / и тест с основным вызовом QC: github.com/patperry/hs-monte-carlo/blob/master/tests/Main.hs.   -  person gliptak    schedule 29.03.2013
comment
В продолжение комментария gliptak - я бы исследовал с помощью test-framework; Мне так удобнее. дополнительный пример.   -  person isturdy    schedule 02.05.2013


Ответы (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.

person fatuhoku    schedule 21.06.2013