是否可以使用fscheck生成数据,特别是列表,以便在fscheck之外使用?我无法调试fscheck测试中的情况,看起来比较结果是相同的,但fscheck说它们不是。
我有这个生成器用于对象列表。如何生成可以从此生成器使用的列表?
let genListObj min max = Gen.listOf Arb.generate<obj> |> Gen.suchThat (fun l -> (l.Length >= min) && (l.Length <= max))
答案 0 :(得分:6)
编辑:此功能现在是FsCheck API(Gen.sample)的一部分,因此您不再需要以下内容......
以下是从给定生成器生成n个样本的示例函数:
let sample n gn =
let rec sample i seed samples =
if i = 0 then samples
else sample (i-1) (Random.stdSplit seed |> snd) (Gen.eval 1000 seed gn :: samples)
sample n (Random.newSeed()) []
编辑:其中的1000个幻数表示生成的值的大小。 1000是相当大的 - 例如例如,序列的长度在0到1000之间,字符串也是如此。如果生成需要很长时间,您可能需要调整该值(或将其作为函数的参数)。