问题标签 [property-based-testing]

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 回答
86 浏览

f# - 为什么我的先决条件在我的基于属性的测试中被忽略?

为什么我的先决条件在我的基于属性的测试中被忽略?

我的测试的前提条件如下:

因此,我的实际测试是:

但是,我的测试仍然失败:

结果消息:System.Exception:可证伪,经过 3 次测试(1 次收缩)(StdGen(985619705,296133555)):原始:1 -1 收缩:0 -1

领域:

[更新]

我也试过:

但是,我收到以下错误:

类型不匹配。期望一个属性 -> 'a 但给定一个 int -> Map<(int * int),Cell> 类型'Property'与类型'int'不匹配

0 投票
1 回答
226 浏览

f# - 在实现基于属性的测试时,我什么时候应该在前置条件表达式上使用输入生成器?

在实现基于属性的测试时,我什么时候应该在前置条件表达式上使用输入生成器?

选择特定选项时是否有性能考虑?

在内部,一种方法是否不可避免地使用另一种方法?

我认为与输入生成器相比,执行前置条件表达式需要更长的时间。有没有人测试过这个?

为什么我们需要两者?

0 投票
2 回答
52 浏览

f# - 当我预计它会失败时,基于属性的测试继续通过

我敢肯定这是微不足道的。但是,以下测试将始终通过:

我也试过:

具体来说,为什么这个测试显然应该失败时仍然通过?

0 投票
1 回答
481 浏览

f# - 从相同类型的自定义生成器调用默认 FsCheck 生成器

我用一些自定义生成器定义了一个类型,以使 FsCheck 生成一些类型的自定义实例。但对于其中一种复杂类型,我想先使用默认的 FsCheck 生成,然后再调整结果。这是一个(简化的)代码:

问题是当 SecondCustomType() 静态方法调用 Arb.generate 时,它​​会立即调用 SecondCustomType() 导致无限递归。我知道 Arb.generate 必须尊重自定义生成器,所以这就是它调用静态 SecondCustomType() 的原因,但我需要调用 SecondCustomType 的默认(非自定义)Arb.generate 实现。我不能从不同的类型调用实现,因为我的自定义生成器使用 FirstCustomType 的自定义生成器,因此默认的 SecondCustomType 实现必须知道在 CustomGenerators 类型中定义的所有自定义生成器。这是一个糟糕的圈子,我还没有找到一个干净的解决方案(只有解决方法)。

0 投票
1 回答
192 浏览

erlang - 在 Erlang 的 PropEr 中,如何获取生成器的样本?

我正在使用PropEr编写基于属性的测试。如何查看我的生成器生成的数据类型?

假设我有以下生成器:

我想检查它生成什么样的数据,例如:


对于 Triq 中的相同问题,请看这里

0 投票
1 回答
74 浏览

f# - 如何解释基于属性的测试代码?

如何解释基于属性的测试代码?

我正在努力翻译以下代码段中的说明:

具体来说,我正在与向后管道运算符(即“<|”)作斗争。

这是测试:

有人可以逐步指导我了解此代码的工作原理吗?

可以使用正向管道运算符(即“|>”)重写吗?

0 投票
1 回答
70 浏览

f# - 在执行基于属性的测试时,如何在测试输入上建立条件?

在执行基于属性的测试时,如何在测试输入上建立条件?

例如,当我需要整数时,以下代码会生成布尔值:

这是功能:

我需要这样的东西才能获得合格的整数:

但是,我只是没有看到这个选项。

有什么建议么?

0 投票
1 回答
205 浏览

scala - 使用 scalacheck 测试有效的状态转换

假设我有这个类:

我想canTransitionTo用 scalacheck 命令测试逻辑(为了简单起见,这里不包括在内),但我在如何开始时遇到了一些麻烦。有任何想法吗?

0 投票
2 回答
1714 浏览

python - 基于属性的测试和突变测试有什么区别?

我对这个问题的上下文是在 Python 中。

假设检验库(即基于属性的检验): https ://hypothesis.readthedocs.io/en/latest/

突变测试库: https ://github.com/sixty-north/cosmic-ray

0 投票
0 回答
191 浏览

scala - 使用 specs2 + scalacheck 验证类型类(简单的 Arbitrary[...] 示例)

我无法让 specs2 和 scalacheck 合作。我有一个简单的类,Credit它采用 1 到 59 范围内的单个整数(超出此范围的任何内容都应引发异常)。

我想定义两个测试: 1 验证正面案例的测试(任何Credit(1)...Credit(59)验证成功);并且,Credit该范围之外的任何内容都应该无法验证(它实际上应该在构造时抛出异常)。似乎正确的方法是定义一个Arbitrary[Credit]生成器,如下所示:

然后我也会定义一个arbitraryBadCreditGenerator

问题是任意的隐式使用,并试图找出prop与我的两个不同任意实例一起使用的语法。

到目前为止,我所拥有的是:

我正在使用 Accord 进行验证,因此任何创建无效范围的尝试Credit都应该失败。

这不编译,因为我的使用badCreditGenerator都是错误的。我一直在摆弄它并试图提出解决方案;理想情况下,我有两个任意生成器,一个生成“好”Credit实例,一个尝试生成坏实例。

也许有更好的方法?

任何帮助表示赞赏。谢谢!