TL;DR
テストが失敗したとき、失敗に至るまでのすべての値を表示するのが特徴の F# のテスティングフレームワーク。
仕組み
アサーションは専用の DSL ではなく、静的に型検査される F# の引用式(<@ ... @>)で書く。中心となる関数は test で、bool を返す引用式を受け取る。単純な比較には =! や >! などの演算子を使える。
アサーションが失敗すると、式を 1 段階ずつ簡約した途中の値を、最終的な結果まで順に表示する。
xUnit.net、NUnit、MSTest など、例外でテストの失敗を伝えるフレームワークと設定なしで組み合わせられる。F# Interactive でも使える。
例
[<Fact>]
let ``demo Unquote xUnit support`` () =
test <@ [3; 2; 1; 0] |> List.map ((+) 1) = [1 + 3..1 + 0] @>このテストは失敗し、次のように簡約の過程が表示される。
[3; 2; 1; 0] |> List.map ((+) 1) = [1 + 3..1 + 0]
[4; 3; 2; 1] = [4..1]
[4; 3; 2; 1] = []
false