F# 如何在FsCheck中注册任意实例并让xUnit使用它?
我有一个类型F# 如何在FsCheck中注册任意实例并让xUnit使用它?,f#,xunit,fscheck,F#,Xunit,Fscheck,我有一个类型Average和一个名为sum的double字段 我创建了一个任意函数来生成有效的实例 let AverageGen = Gen.map2 (fun s c -> Average(float(s),int64(int(c))) (Arb.Default.NormalFloat().Generator) (Arb.Default.PositiveInt().Generator) |> Arb.fromGen 如何在xUnit的属性样式测试中生成类型为Average的参
Average
和一个名为sum
的double
字段
我创建了一个任意函数来生成有效的实例
let AverageGen = Gen.map2 (fun s c -> Average(float(s),int64(int(c))) (Arb.Default.NormalFloat().Generator) (Arb.Default.PositiveInt().Generator) |> Arb.fromGen
如何在xUnit的属性样式测试中生成类型为Average的参数
[<Property>]
static member average_test(av:Average) = ...
[]
静态成员平均值_测试(av:average)=。。。
类型生成器=
静态成员TestCase()=
{new arbitral()与
超驰x发生器=
gen{。。。
返回TestCase(…)}
[]
我认为瓦西里·基里琴科的解决方案是正确的,但为了完整起见,风格:
+1但是,它不应该是new arbitral()…
?c#::[Property(arbitral=new Type[]{typeof(Generators)}]
我从来没有让Arb.register为我工作过。最近,我得到了“类型MyType不是由FSECK自动处理的。考虑使用另一种类型,或者为它编写和注册一个生成器。”类型DimaEngEngals=静态成员MyType()= {新的仲裁()。do Arb.register()|>忽略[]。。。testPropertyWithConfig配置10K“相等”…现在很确定,我的问题是Expecto中的一个bug。在Expecto之外,注册确实起到了我所期望的作用。我将很快记录并提出一个问题。
type Generators =
static member TestCase() =
{ new Arbitrary<TestCase>() with
override x.Generator =
gen { ...
return TestCase(...) }}
[<Property(Arbitrary=[|typeof<Generators>|])>]
do Arb.register<Generators>() |> ignore
[<Property>]
let member average_test () =
Prop.forAll averageGen (fun avg ->
// The rest of the test goes here... )