2012-11-23 5 views
10

Moduł QuickCheck został usunięty za pomocą version 2 (1.2.0.1 still has it). Z tego powodu zawsze czuję się jak mapM_ - wiele testów razem jest trochę hacky. Czy mogę pominąć funkcję następczą w QuickCheck 2? Czy istnieje kanoniczny sposób grupowania niezależnych testów?Szybkie sprawdzanie 2 przetwarzanie wsadowe

+3

Spójrz [ 'test-framework'] (http://hackage.haskell.org/package/test-framework) i [' test-framework-quickcheck2'] (http: // hackage .haskell.org/package/test-framework-quickcheck2). – dflemstr

Odpowiedz

9

Istnieje opcja "idź do domu" i zgrupuj wszystkie testy w bieżącym module przez Test.QuickCheck.All. Wymaga szablonu Haskell, a wszystkie właściwości muszą zaczynać się od prop_. Ex:

{-# 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

Dwie ważne uwagi: Po pierwsze, właściwości z importowanych modułów nie są uwzględnione. Po drugie, (i wygląda bardzo dziwnie), w GHC 7.8 musisz wstawić 'return []' przed linią 'runTests = $ quickCheckAll'. Więcej informacji można znaleźć na stronie [moduł plandeki] (http://hackage.haskell.org/package/QuickCheck-2.7.6/docs/Test-QuickCheck-All.html). – MasterMastic

+0

Jeśli testujesz przez kabałowy zestaw testowy, ten 'główny' prawdopodobnie lepiej Ci odpowiada:' main = runTests >> = \ passed -> if passed then exitSuccess else exitFailure'. Będziesz także musiał "zaimportować System.Exit (exitSuccess, exitFailure)". – MasterMastic