首先,當我運行它,我得到不同的行爲給你。一個例子,從我的測試項目結果:
Result Message: FsCheck.Xunit.PropertyFailedException : Falsifiable, after 4 tests (0 shrinks) (StdGen (196938613,296107830)): Original: B
這是有道理的,因爲fscheck應該能夠自動創建用於通過反射可區分聯合類型(如ABC
)發電機,請參閱:https://fscheck.github.io/FsCheck/TestData.html
我會因此建議檢查您的所有軟件包是否已正確安裝並完全更新。
我安裝:
- FsCheck(V2.2.4)
- FsCheck.Xunit(V2.2.4)
- 的xUnit(V2.1.0)
FSharp.Core
始終安裝哪個引用FSharp.Core因爲他們AR的NuGet包時要小心e經常分發一個覆蓋項目設置的特定版本。
如果發生這種情況,請從packages.config文件中刪除FSharp.Core,刪除項目中對FSharp.Core的引用,並將其替換爲程序集列表中所需的FSharp.Core版本。您可以在擴展名下找到FSharp.Core。
您也可以使用您的app.config文件重定向綁定重定向到舊的版本FSharp.Core到指定的較新版本的引用。
在.fsproj使用<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
可以自動生成這樣綁定重定向。有關使用的更多詳細信息,請參閱https://fsharp.github.io/2015/04/18/fsharp-core-notes.html。
發電機
你有錯誤消息指能力fscheck在那裏你可以指定你的類型的任意實例進行性能測試的目的而創建。自定義生成器的例子:
type MyGenerators =
static member ABC() =
{new Arbitrary<ABC>() with
override x.Generator = gen { return A; } // generator that creates only A
override x.Shrinker t = Seq.empty }
然後我就可以用這個發電機來檢查我的財產:
[<Property(Arbitrary=[|typeof<MyGenerators>|])>]
static member ``ABC is always A`` v =
v = A
該測試現在總是通過,因爲我一直指定的發電機產生的A
。
App.config中的綁定重定向正是我所需要的。請注意,您可以將其推廣到'''' –