Il modulo Batch
di QuickCheck è stato rimosso con version 2 (1.2.0.1 still has it). Per questo motivo, mi sento sempre come mapM_
: fare test multipli insieme è una specie di hacky. Sto trascurando la funzione successore in QuickCheck 2? Esiste un modo canonico per raggruppare test indipendenti?QuickCheck 2 elaborazione batch
risposta
C'è l'opzione "vai alla grande o vai a casa" per raggruppare tutti i test nel modulo corrente tramite Test.QuickCheck.All
. Richiede Template Haskell e tutte le proprietà devono iniziare con prop_
. Es:
{-# 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."
Due note importanti: in primo luogo, le proprietà dei moduli importati non sembrano essere incluse. Secondo, (e sembra molto strano), in GHC 7.8 è necessario inserire 'return []' prima della riga 'runTests = $ quickCheckAll'. Vedi la pagina [modulo haddock] (http://hackage.haskell.org/package/QuickCheck-2.7.6/docs/Test-QuickCheck-All.html) per maggiori informazioni. – MasterMastic
Se stai provando attraverso una cabal test-suite, questo 'main' probabilmente ti si addice meglio:' main = runTests >> = \ passed -> se passato poi exitSuccess else exitFailure'. E dovrai anche importare System.Exit (exitSuccess, exitFailure) '. – MasterMastic
Look at [ 'test-framework'] (http://hackage.haskell.org/package/test-framework) e [' test-quadro-quickcheck2'] (http: // hackage .haskell.org/pacchetto/test-quadro-quickcheck2). – dflemstr