QuickCheck如何测试每个样本的所有属性

时间:2016-07-06 20:42:54

标签: haskell template-haskell quickcheck

...而不是为每个属性生成100个新的随机样本?

我的testsuite包含这里解释的TemplateHaskell hack [1] 测试名为prop_ *的所有函数。运行测试程序打印

=== prop_foo from tests/lala.lhs:20 ===
+++ OK, passed 100 tests.

=== prop_bar from tests/lala.lhs:28 ===
+++ OK, passed 100 tests.

看起来每个样本都要经过100个随机样本 属性。

问题:生成样本非常昂贵,检查 属性不是。所以我想有办法传递每个随机 对每个prop_ *函数进行采样,而不是创建新函数 (#properties * 100)许多样本。

有内置的东西吗?实际上,我想我需要一个 更换接头

$(forAllProperties)

main :: IO ()
main
  = do args <- parseArgs <$> getArgs
       s <- $(forAllProperties) $ quickCheckWithResult args
       s ? return () $ exitFailure
  where
    parseArgs as
      = null as ? stdArgs $ stdArgs{ maxSuccess = read $ head as }

[1] Simple haskell unit testing,和     QuickCheck exit status on failures, and cabal integration

1 个答案:

答案 0 :(得分:0)

在这篇文章中,您可以看到如何分组测试

Stackoverflow post

该用户提供了一个非常简单的使用示例 Test.Tasty.QuickCheck

使用 testProperty testGroup ,您可以将每个随机样本传递给每个属性

在下一个链接中,您可以查看此软件包的 hackage

Test.Tasty.QuickCheck