Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
F# 如何在FsCheck中注册任意实例并让xUnit使用它?_F#_Xunit_Fscheck - Fatal编程技术网

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... )