LoginSignup
13
9

More than 1 year has passed since last update.

[.NET] Fluent Assertionsを使って、きれいで読みやすいテストコードを書く

Last updated at Posted at 2020-11-08

はじめに

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(期待値, ズレ);
13
9
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
9