Sparkyのツールヒント:流暢な主張
6749 ワード
私は平均的な開発者より多くのユニットテストを書くのが好きです🥁).
私は本当に簡単に、より楽しくテストを書くためにツールを感謝し、そしてFluent Assertions 私のお気に入りの一つです.
The Microsoft.VisualStudio.TestTools.UnitTesting assert , StringAssertクラスとCollectionAssertクラスは.よろしいでしょう.(私はNunitを使ってからしばらくしていたし、XUnitを使ったことがないので、これらのフレームワークの組み込みアサートについては知りません)
流暢なアサーションはセットです.TDDまたはBDDスタイルの単位テストの期待される結果を文のような構文で指定できるようにするNET拡張メソッド.例えば、"mstest "構文は以下のようになります:
期待する benull () beempty () がっかりする 終結する 驚異的な 収容する ... 期待する BeGreorororalalto (期待) Belessorequalto (予定) 最小値(最大値) bepositive () ... 1月3日(2022年).at ( 22 , 15 ) Beonorafter ( 2010年3月( 2010 )) haveday ( 1 ) ヘベースト( 3 ) Haveyear ( 2010 ) 時間( 22 ) belessthan ()以前( otherdatetime ) ... HaveCount (期待される) havesemecount (その他のコレクション) 収容する notinclude (予定) onlyinclude ( x => x . predicate ) ... これらはほんの数例です.これらと多くの他のタイプのためにさらに多くの方法があります.
私はMSテストが嫌いです
流暢なアサーションでは、例外テストは次のようになります.
流暢なアサーションは、あなた自身の“べき”拡張メソッドを書くことができるようにうまくセットアップされます.
があるmany NuGet packages 追加の拡張メソッドを含むSparkyTestHelpers.Moq.Fluent .
流暢なアサーションは、アサーションを書くためのより良い構文を与えるだけではありません.たとえばアサーションが失敗したときには、より良いメッセージを与えます.
を返します.等しい
( BTW ,これは些細な例ではありません.😏)
私は流暢なアサーションが大好きです.ネット単体テスト、私はあなたと思う.syld ()は試してみましょう.
私は本当に簡単に、より楽しくテストを書くためにツールを感謝し、そしてFluent Assertions 私のお気に入りの一つです.
The Microsoft.VisualStudio.TestTools.UnitTesting assert , StringAssertクラスとCollectionAssertクラスは.よろしいでしょう.(私はNunitを使ってからしばらくしていたし、XUnitを使ったことがないので、これらのフレームワークの組み込みアサートについては知りません)
流暢なアサーションはセットです.TDDまたはBDDスタイルの単位テストの期待される結果を文のような構文で指定できるようにするNET拡張メソッド.例えば、"mstest "構文は以下のようになります:
Assert.AreEqual(31, daysInJune);
...として流暢に表現できます:using FluentAssertions;
. . .
daysInJune.Should().Be(31);
"fluentassertions "名前空間を使用すると、有用な"shold ()"の拡張メソッドが有効になります.文字列:
番号
datetime :
コレクション
そしてアサーションは可能です!
string stateName = "OHIO";
stateName.Should().StartWith("O").And.EndWith("O").And.Contain("HI");
例外
私はMSテストが嫌いです
[ExpectedException(type)]
属性.他の欠点の中では、例外メッセージをテストできません.流暢なアサーションでは、例外テストは次のようになります.
subject.Invoking(x => x.Foo("Hello"))
.Should().Throw<InvalidOperationException>()
.WithMessage("Hello is not allowed at this moment");
...または、「手配/行為/assert」構文で:Action action = () => x.Foo("Hello");
action
.Should().Throw<InvalidOperationException>()
.WithMessage("Hello is not allowed at this moment");
伸展性
流暢なアサーションは、あなた自身の“べき”拡張メソッドを書くことができるようにうまくセットアップされます.
があるmany NuGet packages 追加の拡張メソッドを含むSparkyTestHelpers.Moq.Fluent .
しかし、待って、もっと!
流暢なアサーションは、アサーションを書くためのより良い構文を与えるだけではありません.たとえばアサーションが失敗したときには、より良いメッセージを与えます.
を返します.等しい
string correctNameSpelling = "Bryan";
Assert.AreEqual("Brian", correctNameSpelling);
...失敗メッセージは以下の通りです.Assert.AreEqual failed. Expected:<Brian>. Actual:<Bryan>.
流暢な主張でstring correctNameSpelling = "Bryan";
correctNameSpelling.Should().Be("Brian");
失敗メッセージは以下の通りです.Expected correctNameSpelling to be "Brian", but "Bryan" differs near "yan" (index 2).
“”とは異なりますが、インデックスは、この短い文字列のためのオーバーキルのビットですが、長い文字列にはかなり便利です!( BTW ,これは些細な例ではありません.😏)
私は流暢なアサーションが大好きです.ネット単体テスト、私はあなたと思う.syld ()は試してみましょう.
Reference
この問題について(Sparkyのツールヒント:流暢な主張), 我々は、より多くの情報をここで見つけました https://dev.to/sparky/these-are-a-few-of-my-favorite-tools-fluent-assertions-1a5oテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol