问题标签 [fscheck]
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.
c# - 使用 C# 使用 FsCheck 生成随机字符串
我想逐渐将 FsCheck 集成到我的 C# 测试代码中(作为第一步)。
我想随机生成部分输入数据。
这就是我生成随机字符串的方式:
如果我多次调用它,我每次都会得到相同的字符串。
如何每次获得不同的字符串和/或正确编写此代码?
c# - 使用 FsCheck 进行测试的方法
我正在尝试将范式转变为 FsCheck 和基于随机属性的测试。我有复杂的业务工作流程,其中包含的测试用例比我可能列举的要多,而且业务逻辑是一个不断变化的目标,其中添加了新功能。
背景:匹配是企业资源计划(ERP)系统中非常常见的抽象。订单履行、供应链物流等
示例:给定一个 C 和一个 P,确定两者是否匹配。在任何给定的时间点,一些 P永远无法匹配,而一些 C永远无法匹配。每个人都有一个状态,表明他们是否可以考虑参加比赛。
奖励:除了天真的“块匹配”状态之外,C 和 P 都有一组检查。对于匹配的 C,一些检查必须为真,对于匹配的 P,一些检查必须为真,并且 C 的一些检查必须与 P 的检查进行交叉检查。这就是我怀疑基于模型的地方使用 FsCheck 进行测试将带来巨大的收益,因为 (a) 它是添加到产品中的新功能的示例 (b) 我可以编写测试(用户交互),例如:
- 创造
- 创建后,通过管道向前移动
- 向后移动(何时允许与不允许?例如:付费订单可能无法返回采购批准步骤)
- 在管道中间添加/删除东西(如检查)
- 如果我要求为相同的 C 和 P 创建两次匹配(例如,与 PLINQ 同时),我会创建重复项吗?(什么消息会返回给用户?)
我正在努力解决的事情:
- 我应该如何为 FsCheck 生成测试数据?我认为正确的方法是定义 Cs 和 Ps 的所有离散可能组合来创建匹配,并将它们作为我基于模型的测试的“前提条件”,后置条件是是否应该创建匹配,但是...
- 这真的是正确的方法吗?对于基于随机属性的测试工具来说,这感觉太确定了。在这种情况下甚至使用 FsCheck 是否过度设计?然后,就好像我有一个忽略种子值并返回确定性测试数据流的数据生成器。
- 在这一点上,FsCheck 生成器与仅使用 xUnit.net 和 AutoPOCO 之类的东西有什么不同吗?
c# - C#中的FsCheck:生成具有相同形状的二维数组列表
假设我正在编写一些用于视频分析的代码。这是 Video 类的简化版本:
我如何制作Arbitrary<Video>
并注册它?我如何为那个任意制作收缩器?
试过这个,不明白 apply 是如何工作的:
试过这个,但无法在此处插入列表生成器:
f# - 将基于 System.Random 的生成器变成 FsCheck 生成器
假设我有一个基于的生成器,System.Random
并且我想将它变成一个 FsCheck 生成器:
这个简单的解决方案有几个问题:首先是忽略了大小的概念;我认为这不是一个大问题,许多生成器忽略了大小。另一个问题会影响可重复性,因为 FsCheck 生成器是底层的纯函数,随机性仅由测试运行器中的采样机制提供。(这在这个答案中有清楚的解释)。
现在,一个解决方案可能是:
但是有性能损失,因为我MyGen
每次都必须创建一个新实例(初始化成本可能很高)
有更好的办法吗?
f# - F# 中“==>”语法的含义
考虑 F# 中的以下代码
接着
最后
我无法理解的是==>
最后一行的含义!
它是什么?
f# - 此表达式应为字符串类型,但此处为 Gen
我有这个记录:
要为此记录创建生成器,我尝试了以下代码:
问题Name= generateName;
与我遇到的错误一致:
最后剩余的行存在此错误。
tdd - 基于负属性的测试
当您可以表达简单且定义明确的属性时,基于属性的测试是很好的。
在测试解析器的情况下,我也很幸运地使用了“负面属性”,例如通过生成无效标识符或缩进敏感语言的不匹配缩进。但是“负面属性”是一种常见的表达和测试的东西吗?这意味着编写生成专门的虚假输入的生成器。
有哪些与解析器无关的负面属性的真实例子?
f# - Using FsCheck, the propertyCheck function is NOT recognized
The "propertyCheck" function that is referenced within my test method is NOT recognized when I attempt to build my test.
I thought that propertyChecked was a core function of the FsCheck framework?
What other ceremony do I need to perform?
f# - 属性测试作为单元测试运行失败,即使它确实通过了
看起来我作为单元测试运行的属性测试失败了,即使它确实通过了。
代码如下:
概括:
测试名称:当我添加两个数字时,结果不应该取决于参数顺序
测试全名:Tests.Units.当我添加两个数字时,结果不应该取决于参数顺序
测试结果:失败
结果 StackTrace:在 FsUnit.TopLevelOperators.should[a,a](FSharpFunc`2 f, ax, Object y) in d:\GitHub\FsUnit\src\FsUnit.NUnit\FsUnit.fs:line 44
在 Tests.Units. 当我添加两个数字时,结果不应该取决于参数 order()
结果消息:预期:true,但是是
结果标准输出:好的,通过了 100 次测试。
我读对了吗?
我错过了什么?
unit-testing - 使用 RGR 方法时,属性测试是否应该与单元测试一起运行?
使用 RGR 方法时,属性测试是否应该与单元测试一起运行?
RGR:红色 -> 绿色 -> 重构
我注意到我在 18 毫秒内执行的单元测试。
但是,我对相同方法的属性测试需要 215 毫秒。
所以我的属性测试需要四分之一秒才能执行。
此外,这只是一个简单的属性测试。
运行属性测试的有效方法是什么?
只是签到?