【问题标题】:How to get Haskell QuickCheck 2.4 to increase # tests?如何让 Haskell QuickCheck 2.4 增加 # 测试?
【发布时间】:2011-11-14 01:12:59
【问题描述】:

好的,正如我通过previous question 了解到的,RWH 书对于 QuickCheck 来说已经过时了。尽管我读过的所有帖子都告诉我使用 QuickCheck 非常简单,但我找不到任何地方告诉我如何更改为属性运行的测试数量。

RWH 说:

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

如何使用 QuickCheck 2.4 做到这一点?更重要的是,我怎么会发现自己?请不要告诉我,我应该能够从 API 文档中弄清楚。

【问题讨论】:

  • RWH 出现在一个完全错误的时间。例如:QC 变了、异常变了、枚举器流行了等等。

标签: haskell quickcheck


【解决方案1】:

您正在寻找:

quickCheckWith stdArgs { maxSuccess = 5000 } someProp

我是如何发现的

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

你还能怎么知道

如上所述,假设您意识到 Args 类型是您需要的核心(来自黑线鳕),您可以使用 hoogle 找到很多功能。

否则,您可能只需要查看其他软件包的功能,这意味着您需要知道其他软件包值得一看。 QuickCheck 中的examples 文件夹似乎很明显,但并非所有软件包都包含此类示例。使用reverse dependencies,您通常可以找到一个包 来查看,但对于 QC,许多包没有明确的依赖关系。

【讨论】:

  • 嗨,托马斯。我很感激您能够通过 API 找到答案。但是我还没有开始加入这个包,我不能对它的大部分做出正面或反面。随意迷失。在 CoArbitrary 上迷路了。根?也不知道那是什么。文档说“随机生成器”。我希望你明白我的意思。但感谢您提供快速答复。
  • @Ana 可以理解你迷失在 Arbitrary、CoArbitrary 等等。诀窍是,不要被这些东西吓到。大多数 API 都有一个简单的部分可以帮助您入门,因此请尝试忽略复杂的内容并首先找到简单的部分。在这种情况下,您想检查您的代码,因此搜索名称中包含“检查”的函数(由于驼峰式,不区分大小写),看看什么有用。
【解决方案2】:

对于那些想要一次运行所有测试并提供配置的人:

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

【讨论】:

  • 感谢您的回答 - 快速检查既复杂又缺乏文档。我做了上述所有发现并做了 stdArgs { maxSize = 500 } 这确实减少了样本数量;我确实误解了文档。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多