如何使用fscheck生成数据?

Jac*_*Fox 2 f# fscheck

是否可以使用fscheck生成数据,特别是列表,以便在fscheck之外使用?我无法调试fscheck测试中的情况,看起来比较结果是相同的,但fscheck说它们不是.

我有这个生成器用于对象列表.如何生成可以从此生成器使用的列表?

let genListObj min max  = Gen.listOf Arb.generate<obj> |> Gen.suchThat (fun l -> (l.Length >= min) && (l.Length <= max))
Run Code Online (Sandbox Code Playgroud)

Kur*_*out 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()) []
Run Code Online (Sandbox Code Playgroud)

编辑:其中的1000个幻数表示生成的值的大小.1000非常大 - 例如,序列长度在0到1000之间,字符串也是如此.如果生成需要很长时间,您可能需要调整该值(或将其作为函数的参数).