问题标签 [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.
f# - 为什么我的先决条件在我的基于属性的测试中被忽略?
为什么我的先决条件在我的基于属性的测试中被忽略?
我的测试的前提条件如下:
因此,我的实际测试是:
但是,我的测试仍然失败:
结果消息:System.Exception:可证伪,经过 3 次测试(1 次收缩)(StdGen(985619705,296133555)):原始:1 -1 收缩:0 -1
领域:
[更新]
我也试过:
但是,我收到以下错误:
类型不匹配。期望一个属性 -> 'a 但给定一个 int -> Map<(int * int),Cell> 类型'Property'与类型'int'不匹配
f# - 在实现基于属性的测试时,我什么时候应该在前置条件表达式上使用输入生成器?
在实现基于属性的测试时,我什么时候应该在前置条件表达式上使用输入生成器?
选择特定选项时是否有性能考虑?
在内部,一种方法是否不可避免地使用另一种方法?
我认为与输入生成器相比,执行前置条件表达式需要更长的时间。有没有人测试过这个?
为什么我们需要两者?
f# - 当我预计它会失败时,基于属性的测试继续通过
我敢肯定这是微不足道的。但是,以下测试将始终通过:
我也试过:
具体来说,为什么这个测试显然应该失败时仍然通过?
f# - 从相同类型的自定义生成器调用默认 FsCheck 生成器
我用一些自定义生成器定义了一个类型,以使 FsCheck 生成一些类型的自定义实例。但对于其中一种复杂类型,我想先使用默认的 FsCheck 生成,然后再调整结果。这是一个(简化的)代码:
问题是当 SecondCustomType() 静态方法调用 Arb.generate 时,它会立即调用 SecondCustomType() 导致无限递归。我知道 Arb.generate 必须尊重自定义生成器,所以这就是它调用静态 SecondCustomType() 的原因,但我需要调用 SecondCustomType 的默认(非自定义)Arb.generate 实现。我不能从不同的类型调用实现,因为我的自定义生成器使用 FirstCustomType 的自定义生成器,因此默认的 SecondCustomType 实现必须知道在 CustomGenerators 类型中定义的所有自定义生成器。这是一个糟糕的圈子,我还没有找到一个干净的解决方案(只有解决方法)。
f# - 如何解释基于属性的测试代码?
如何解释基于属性的测试代码?
我正在努力翻译以下代码段中的说明:
具体来说,我正在与向后管道运算符(即“<|”)作斗争。
这是测试:
有人可以逐步指导我了解此代码的工作原理吗?
可以使用正向管道运算符(即“|>”)重写吗?
f# - 在执行基于属性的测试时,如何在测试输入上建立条件?
在执行基于属性的测试时,如何在测试输入上建立条件?
例如,当我需要整数时,以下代码会生成布尔值:
这是功能:
我需要这样的东西才能获得合格的整数:
但是,我只是没有看到这个选项。
有什么建议么?
scala - 使用 scalacheck 测试有效的状态转换
假设我有这个类:
我想canTransitionTo
用 scalacheck 命令测试逻辑(为了简单起见,这里不包括在内),但我在如何开始时遇到了一些麻烦。有任何想法吗?
python - 基于属性的测试和突变测试有什么区别?
我对这个问题的上下文是在 Python 中。
假设检验库(即基于属性的检验): https ://hypothesis.readthedocs.io/en/latest/
scala - 使用 specs2 + scalacheck 验证类型类(简单的 Arbitrary[...] 示例)
我无法让 specs2 和 scalacheck 合作。我有一个简单的类,Credit
它采用 1 到 59 范围内的单个整数(超出此范围的任何内容都应引发异常)。
我想定义两个测试: 1 验证正面案例的测试(任何Credit(1)
...Credit(59)
验证成功);并且,Credit
该范围之外的任何内容都应该无法验证(它实际上应该在构造时抛出异常)。似乎正确的方法是定义一个Arbitrary[Credit]
生成器,如下所示:
然后我也会定义一个arbitraryBadCreditGenerator
。
问题是任意的隐式使用,并试图找出prop
与我的两个不同任意实例一起使用的语法。
到目前为止,我所拥有的是:
我正在使用 Accord 进行验证,因此任何创建无效范围的尝试Credit
都应该失败。
这不编译,因为我的使用badCreditGenerator
都是错误的。我一直在摆弄它并试图提出解决方案;理想情况下,我有两个任意生成器,一个生成“好”Credit
实例,一个尝试生成坏实例。
也许有更好的方法?
任何帮助表示赞赏。谢谢!