【发布时间】:2012-11-12 02:02:12
【问题描述】:
QuickCheck 的 Batch 模块已与 version 2 (1.2.0.1 still has it) 一起删除。正因为如此,我总是觉得mapM_-ing 多个测试一起进行有点 hacky。我是否忽略了 QuickCheck 2 中的后续功能?是否有将独立测试组合在一起的规范方法?
【问题讨论】:
标签: haskell batch-processing quickcheck
QuickCheck 的 Batch 模块已与 version 2 (1.2.0.1 still has it) 一起删除。正因为如此,我总是觉得mapM_-ing 多个测试一起进行有点 hacky。我是否忽略了 QuickCheck 2 中的后续功能?是否有将独立测试组合在一起的规范方法?
【问题讨论】:
标签: haskell batch-processing quickcheck
通过Test.QuickCheck.All 将当前模块中的所有测试组合在一起,可以选择“做大或回家”。它需要 Template 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."
【讨论】:
runTests = $quickCheckAll 行之前插入 return []。请参阅module haddock page 了解更多信息。
main 可能更适合您:main = runTests >>= \passed -> if passed then exitSuccess else exitFailure。你还需要import System.Exit(exitSuccess, exitFailure)。