Das Modul Batch
von QuickCheck wurde mit version 2 (1.2.0.1 still has it) entfernt. Aus diesem Grund fühle ich mich immer wie mapM_
-mehrere Tests zusammen ist Art von hacky. Überschaue ich die Nachfolgerfunktion in QuickCheck 2? Gibt es eine kanonische Möglichkeit, unabhängige Tests zusammenzufassen?QuickCheck 2 Stapelverarbeitung
Antwort
Es gibt die Möglichkeit, alle Tests im aktuellen Modul über Test.QuickCheck.All
zu gruppieren. Es erfordert Template Haskell und alle Eigenschaften müssen mit prop_
beginnen. 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."
Zwei wichtige Hinweise: Erstens scheinen Eigenschaften von importierten Modulen nicht enthalten zu sein. Zweitens, (und es sieht sehr seltsam aus) müssen Sie in GHC 7.8 'return []' vor der Zeile 'runTests = $ quickCheckAll 'einfügen. Weitere Informationen finden Sie auf der Seite [Modul Schellfisch] (http://hackage.haskell.org/package/QuickCheck-2.7.6/docs/Test-QuickCheck-All.html). – MasterMastic
Wenn Sie über eine Cabal-Test-Suite testen, würde Ihnen diese 'main' wahrscheinlich besser passen:' main = runTests >> = \ passand -> wenn übergeben, dann exitSuccess else exitFailure'. Außerdem müssen Sie System.Exit (exitSuccess, exitFailure) importieren. – MasterMastic
Blick auf [ 'Test-framework'] (http://hackage.haskell.org/package/test-framework) und [' Test-Framework-quickcheck2'] (http: // Hackage .haskell.org/package/test-framework-quickcheck2). – dflemstr