QuickCheck 1和QuickCheck 2有哪些主要区别?通过查看Haddock文档,我可以看到它被拆分为更多模块,coarbitrary已被新Fun类型和FunArbitrary类替换(这对我来说似乎更容易理解),现在支持测试monadic代码.我还应该注意什么?
好的,正如我通过上一个问题所了解的那样,RWH书籍已经过时了QuickCheck.尽管我读过的所有帖子告诉我使用QuickCheck有多么简单,我找不到任何地方告诉我如何更改为房产运行的测试数量.
RWH说:
handyCheck limit = check defaultConfig {
configMaxTest = limit
, configEvery = \_ _ -> ""
}
Run Code Online (Sandbox Code Playgroud)
如何使用QuickCheck 2.4做到这一点?更重要的是,我怎么会发现自己?请不要告诉我,我应该能够从API文档中找到它.
我写了一个算法来找到Haskell中子集求和问题的解决方案.签名是
subsetSum :: (Ord a, Num a) => [a] -> a -> Maybe [a]
Run Code Online (Sandbox Code Playgroud)
QuickCheck似乎非常适合测试它.例如,我在这里是我可以检查的属性之一:
prop_sumEqualsS l s = case subsetSum l s of
Just solution -> (sum solution) == s
Nothing -> True
Run Code Online (Sandbox Code Playgroud)
问题是该算法计算量很大,运行100个大输入列表的测试需要很长时间才能运行.
我尝试使用QuickCheck 1并且确实运行得很快,但用于测试的数据集非常小.转移到QuickCheck 2后,似乎是相反的问题.有QC 手册,但它似乎很旧(没有日期信息),我不知道QC2还有多少适用.Haskell Wiki上提供了一个教程,但没有太多细节,只有几个关于实例化的文字Arbitrary.
所以我有两个问题:
编辑:更具体地说,我想测试我的解决方案,列表大小从0到100,包含-10000到10000之间的整数.