【问题标题】:QuickCheck 2 batch processingQuickCheck 2 批处理
【发布时间】: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


【解决方案1】:

通过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."

【讨论】:

  • 两个重要说明:首先,导入模块的属性似乎不包括在内。其次,(看起来很奇怪),在 GHC 7.8 中,您需要在 runTests = $quickCheckAll 行之前插入 return []。请参阅module haddock page 了解更多信息。
  • 如果您正在通过 cabal 测试套件进行测试,main 可能更适合您:main = runTests >>= \passed -> if passed then exitSuccess else exitFailure。你还需要import System.Exit(exitSuccess, exitFailure)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-07-01
  • 2010-12-17
  • 2019-08-22
  • 1970-01-01
  • 2021-11-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多