我有以下代码:
var gen = from x in Arb.Generate<int>()
from int y in Gen.Choose(5, 10)
where x > 5
select new tuple { Fst = x, Snd = y };
Run Code Online (Sandbox Code Playgroud)
我可以跑
Prop.ForAll<tuple>(c =>
Console.WriteLine($"{c.Fst}, {c.Snd}")
).Check(Configuration.Default);
Run Code Online (Sandbox Code Playgroud)
我看到了构造生成器和定义属性的所有方法。
但我只是没有足够快地找到如何一起使用它们。
您需要向 FsCheck 注册自定义生成器。请参阅 FSCheck 文档。
简而言之,创建一个类来保存您的自定义生成器。有一个公共静态方法返回您正在生成的类型Arbitrary<T>。T
在您的示例中,您需要将生成器包装在对Arb.From(...).
public class MyGenerators {
public static Arbitrary<tuple> Tuple() {
return Arb.From(from x in Arb.Generate<int>()
from int y in Gen.Choose(5, 10)
where x > 5
select new tuple { Fst = x, Snd = y });
}
}
Run Code Online (Sandbox Code Playgroud)
最后,Arb.Register<MyGenerators>()在运行测试之前致电。
| 归档时间: |
|
| 查看次数: |
2013 次 |
| 最近记录: |