Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell QuickCheck如何测试每个样本的所有属性_Haskell_Template Haskell_Quickcheck - Fatal编程技术网

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

Haskell QuickCheck如何测试每个样本的所有属性,haskell,template-haskell,quickcheck,Haskell,Template Haskell,Quickcheck,…而不是为每个属性生成100个新的随机样本 我的测试套件包含此处[1]解释的TemplateHaskell hack 测试名为prop_u*的所有函数。运行测试程序打印 === prop_foo from tests/lala.lhs:20 === +++ OK, passed 100 tests. === prop_bar from tests/lala.lhs:28 === +++ OK, passed 100 tests. 它看起来像是对每一个样本进行了100个随机抽样 财产 问题是:

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

我的测试套件包含此处[1]解释的TemplateHaskell hack 测试名为prop_u*的所有函数。运行测试程序打印

=== 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()
主要的

=do args在这篇文章中,您可以看到如何对测试进行分组

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

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

在下一个链接中,您可以检查此软件包的黑客行为


propAllOfThem x=all($x)[prop1,prop2,prop3]
?@DanielWagner:如果你实际上是指
($x)
,那么我不明白(回忆一下:模板Haskell!)。如果您的意思是
($x)
,那么不,这有几个缺点:属性不会自动收集,如果失败,我看不出是哪一个,QuickCheck只报告
属性AllOfThem
。这并不能解决我的问题,请参阅上面对@DanielWagner的评论。
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 }