2012-11-23 52 views
10

QuickCheck的Batch模塊用version 21.2.0.1 still has it)刪除。正因爲如此,我總是感覺像mapM_-多次測試在一起是一種哈克。我忽略了QuickCheck 2中的後續功能嗎?是否有將獨立測試分組在一起的規範方法?QuickCheck 2批處理

+3

看['測試framework'](http://hackage.haskell.org/package/test-framework)和['測試框架-quickcheck2'](HTTP:// hackage .haskell.org /包/測試框架-quickcheck2)。 – dflemstr

回答

9

通過Test.QuickCheck.All將當前模塊中的所有測試分組在一起的「選擇大或回家」選項。它需要模板Haskell,所有屬性必須以prop_開頭。例:

{-# LANGUAGE TemplateHaskell #-} 

import Test.QuickCheck.All 

prop_one, prop_two :: a -> Bool 
prop_one = const True 
prop_two = const True 

runTests :: IO Bool 
runTests = $quickCheckAll 

main :: IO() 
main = runTests >>= \passed -> if passed then putStrLn "All tests passed." 
             else putStrLn "Some tests failed." 
+1

兩個重要注意事項:首先,來自導入模塊的屬性似乎不包括在內。其次,(看起來很奇怪),在GHC 7.8中,你需要在'runTests = $ quickCheckAll'這行之前插入'return []'。有關更多信息,請參閱[模塊haddock頁面](http://hackage.haskell.org/package/QuickCheck-2.7.6/docs/Test-QuickCheck-All.html)。 – MasterMastic

+0

如果你正在通過cabal測試套件測試,這個'main'可能更適合你:'main = runTests >> = \ passed - >如果通過,然後exitSuccess else exitFailure'。你還需要'導入System.Exit(exitSuccess,exitFailure)'。 – MasterMastic