2011-11-14 60 views
25

好的,正如我通过我的previous question了解到的,RWH书已经过时了QuickCheck。尽管我读过的所有文章都告诉我如何使用QuickCheck非常简单,但是我找不到任何地方告诉我如何更改为属性运行的测试数量。如何让Haskell QuickCheck 2.4增加#测试?

RWH说:

handyCheck limit = check defaultConfig { 
        configMaxTest = limit 
        , configEvery = \_ _ -> "" 
        } 

如何使用快速检查2.4做到这一点?更重要的是,我将如何发现自己?请不要告诉我,我应该能够从API文档中找到它。

+8

RWH在一个完全错误的时间就出来了。例如:QC更改,例外更改,统计员变得流行等。 –

回答

46

您正在寻找:

quickCheckWith stdArgs { maxSuccess = 5000 } someProp 

如何我发现

  1. 我去API documentation
  2. 我看到的第二件事,quickCheck之后是字段的Args类型。
  3. 我不想写所有的字段,所以我寻找Args类型的值 - 找到stdArgs。 (使用你的浏览器搜索功能 - 通常按Ctrl - F)。 OTOH,我本可以用hoogle
  4. 我需要使用我的Args类型的地方,所以我一直在寻找。下一行是quickCheckWith - 宾果!另一方面,我可以使用hoogle

你怎么还能找出

正如我上面所说,你也可以使用hoogle找了很多的功能,假设你实现Args类型是你所需要的核心(从黑线鳕)。否则,你可能会减少看其他软件包的功能,这意味着你需要知道其他软件包值得看的东西。 QuickCheck中的examples文件夹看起来很明显,但并非所有软件包都包含这些示例。使用reverse dependencies你可以经常发现一个包,其中包含,但是对于QC来说很多包没有明确的依赖关系。

+6

您好托马斯。我可以理解你可以通过API找到答案。但是我还没有发起这个软件包,而且我也无法做出正面或反面的大部分。随意丢失。失去联合任务。根?不知道那是甚么。该文件说“随机发生器”。我希望你明白我的意思。但谢谢你提供了一个快速的答案。 – Ana

+4

@Ana可以理解的是,你迷失在任意,任意和任何东西上。诀窍是,不要被这些东西吓倒。大多数API都有一个让你开始的简单部分,所以尽量忽略复杂的东西,先找到容易的部分。在这种情况下,你想检查你的代码,所以搜索名字中包含'check'的函数(因为camelCase而不区分大小写),看看有用的东西。 –

2

对于那些谁想要同时运行所有测试,并提供它们的配置:

return [] 
main = $forAllProperties (quickCheckWithResult stdArgs { maxSuccess = 500 }) 
+0

感谢你的回答 - quickcheck要么复杂,要么缺少文档。我做了上述所有的发现,并做了stdArgs {maxSize = 500},这减少了样本的数量;我误解了文档。 – user855443