问题标签 [quickcheck]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
99 浏览

haskell - 使用任意实例生成三元组 (Network.HTTP.ResponseCode)

我有一个从 Network.HTTP 获取 ResponseCode 的函数。为了使用 QuickCheck 对其进行测试,我想为 ResponseCode 编写一个 Arbitrary 实例。(如果您不知道,ResponseCode 只是该库中的三个整数:type ResponseCode = (Int, Int, Int))。

所以我写了这样的东西:

首先,GHC 抱怨我使用类型的方式不是标准的 haskell,所以我必须使用一些编译器标志(这不是我真正想要的,因为我觉得必须有一个简单的解决方案来解决这个简单的问题,而无需标志)。

其次,我的任意函数类型错误,这很明显。但是后来我真的不知道如何编写一个函数来返回一个三元组,其中随机整数范围为 1-6。

如果有人可以在这里帮助我,我将不胜感激。

谢谢你。

0 投票
2 回答
318 浏览

haskell - 从 QuickCheck1 转换为 QuickCheck2 的“食谱”?

是否有可用于从 QuickCheck1 转换为 QuickCheck2 的食谱?

作为一些示例,defaultConfig(替换为Args) 和trivial被删除和CoArbitrary引入。

我确实阅读了QuickCheck 2 (with single answer ...) 中的新增功能

0 投票
1 回答
351 浏览

haskell - 快速检查 CoffeeScript

它存在吗?我找不到它,它也没有在维基百科上列出。(这意味着它不存在:))

我知道 node.js 有它。不确定在咖啡脚本中编写我的节点应用程序并应用快速检查是否可行。

http://en.wikipedia.org/wiki/Quick_check

有什么线索吗?

0 投票
1 回答
1705 浏览

testing - 通过使用 QuickCheck 生成输入来测试 Parsec 解析器

我想为一套 Parsec 解析器编写测试。这是我想用 QuickCheck 测试的解析器的一个简单示例:

因此,理想情况下,我希望 QuickCheck 生成有效的标识符并确保我得到正确的结果,以及生成无效的标识符并确保它们返回ParseError. 是否有任何实用程序可以使这种事情变得更容易?有没有办法可以“反向运行我的解析器”来生成这样的输入?

一般而言,这个解析器的一套好的 QuickCheck 测试应该是什么样子的?在某种程度上,似乎我基本上必须在 QuickCheck 中复制解析器的逻辑才能实现彻底的测试。这真的是一个好主意,或者这可能是像 HUnit 这样更传统的工具比 QuickCheck 更适合的情况?

0 投票
7 回答
5020 浏览

java - Ploeh 的 AutoFixture for .Net 是否有 Java 替代品?

我正在寻找一种 Java 工具,它可以在我的测试中创建匿名变量(我不关心其值的变量),类似于 .Net 中的 AutoFixture。这是AutoFixture 的自述文件的链接,其中有很好的例子来说明它的作用。

这是取自同一个自述文件的一个简短示例:

Java世界有这样的工具吗?

编辑:

我尝试了 QuickCheck,虽然它设法完成了我正在寻找的事情:

该工具似乎只适用于接口。如果我将 Test 更改为类并将方法更改为字段,则生成器会引发仅支持接口的异常。

我真诚地希望有更好的东西,特别是因为文档严重缺乏。

0 投票
1 回答
497 浏览

haskell - 非布尔测试的快速检查

我正在使用 QuickCheck 来测试我的代码以进行一些数值计算。基本上我有一个精确的函数和几个更有效的近似值。

我目前正在实现我想要测试的属性,例如:

但是,如果能准确地知道每种近似算法的准确度并将它们相互比较,那就太好了。一种简单的方法是获取不等式左侧的均值和标准差的报告。这有可能吗?

0 投票
2 回答
317 浏览

haskell - 类型类挑战:同时具有可变参数和结果

在编写一些Arbitrary实例时,我使用以下非常机械的模式实现了几个函数:

我手动将这些函数写到 ,shrink7这似乎足以满足我的需要。但我不禁想知道:这可以合理地自动化吗?解决方案的奖励积分:

  • 允许shrink0 f = []
  • 生成所有的收缩器
  • 有很多类型类黑客,我喜欢
  • 跳过可怕的扩展,如不连贯/不可判定/重叠的实例
  • 让我也吃蛋糕:不需要我在传递它时 uncurry或在应用它时fcurry 应用程序,和shrinkX fabc
0 投票
1 回答
1639 浏览

haskell - 如何在 Quickcheck 中使用修饰符(在我的情况下为正)

我有一个函数,rev它为三个类型类中的类型返回一些值:

我想用快速检查测试一些关于它的属性。不过,我对测试 Integral 类型的负值不感兴趣,因为我在使用基础库中Integer缺少Natural类型。所以我想,让我们取与生成的值为负时生成的值相反,我会没事的:

(测试的属性在这里并不重要 - 特别是它不适用于非常基本的值,我知道,这不是这个问题的主题)

然后我遇到了Positive修改器,并认为虽然我的测试现在正在运行,但以更好的方式实现它会很好。所以我尝试了:

我必须承认,当它编译时我很惊讶。但是在运行测试时弹出错误:

所以我想,“mmk,必须将这个Positive东西声明为”的实例Read。所以我就这样做了,但该实例已经在 quickCheck 库中声明,似乎是因为 ghci 对我大喊大叫。

在这一点上我迷路了,因为我没有找到好的文档(如果有的话)。

任何帮助我理解快速检查库中的修饰符和其他好东西的指针都将不胜感激。

0 投票
1 回答
832 浏览

haskell - QuickCheck 非空字符串 - listOf

我正在学习快速检查(还有haskell),我有以下代码:

我的问题是关于如何使 listOf 永远不会返回空(NonEmpty),因为现在对于生成的一些数据,我会收到像 {unFN = "http://.net"} 这样的字符串,简化我希望该名称永远不会为空

0 投票
3 回答
1532 浏览

haskell - 如何告诉 QuickCheck 只为参数生成有效的列表索引?

假设我想为该(!!)函数编写一些单元测试。

我想将 n 限制为仅有效索引,我知道我可以做类似的事情

但这使得绝大多数生成的案例都是无效的并被丢弃。有没有办法可以设置,以便 QuickCheckxs首先生成列表并使用它的值来生成有效的情况n