はじめに
Fluent Assertions は、.NETのテストコードを流麗で読みやすくしてくれるライブラリです。
日本語解説記事があまり見当たらないので、ここでまとめてみようと思う次第です。
JavaScriptのJasmineを知っているかたでしたら、jasminのmatchersの.NET版みたいなものと思ってください。
Fluent Assertions使うとどうなるの?
だいたいのテストランナーでは、このようなテストコードを書きます。
Assert.Equal(期待値, 実際の値);
Fluent Assertionsを使うと、このように書きます。
実際の値.Should().Be(期待値);
「プログラミングは文学である」と言われます。
どうでしょ?文学ぽいですか?
導入
NuGet から導入できます。
Visual Studioの場合は、プロジェクトを右クリックすると現れるメニューからインストールできます。
いろいろなアサーションの書き方
よく使うものをあげてみます。
// 値が等しい
実際の値.Should().Be(期待値);
// 値がNULL
実際の値.Should().BeNull();
// 値がNULLではない
実際の値.Should().NotBeNull();
// 値がTrue
実際の値.Should().BeTrue();
// 値がFalse
実際の値.Should().BeFalse();
// 値が同じオブジェクト
実際の値.Should().BeSameAs(期待値);
コレクション関係
コレクション関係でよく使うものです。
// 同じ要素を含む
実際の値.Should().BeEquivalentTo(期待値);
// 空のコレクション
実際の値.Should().BeEmpty();
日時関係
日時関係でよく使うものです。
// 期待値より後
実際の値.Should().BeAfter(期待値);
// 期待値より前
実際の値.Should().BeBefore(期待値);
// 期待値とズレ(単位:ms)の範囲内
実際の値.Should().BeCloseTo(期待値, ズレ);