2017-02-14 7 views
0

Assertのクラスメソッドは、参考になるものよりもむしろ混乱しています。私はMSのMSTestメソッドが私に比較を後ろ向きに書くことを期待している(または必要としている)のは特に迷惑だと思う。 e。定数/期待値が最初に、変数/実際値が2番目になります。これは自然言語とは矛盾し、したがってコード内の一般的な比較のための多くのプログラミングガイドラインに当てはまります。なぜAssertクラスメソッドを使うべきですか?

これに代えてそう:これで何が悪い

Assert.AreEqual(5, value, "Value is not correct."); 

、より正常にテスト命令を探して:

if (value != 5) Assert.Fail("Value is not correct."); 

これは、すべてのコードは次のようになります。それは、すべてのプログラマーの目が本当に素早く見て理解するように訓練されたものです。そして、他のアサーションメソッドは、通常のコードで簡単に書くことができます。

C#6のusing staticでは、Assert.の部分を離れることさえできます。

WebおよびAssertクラスのドキュメントでこれに関する推論が見つかりませんでした。

+0

あなたは[流暢な主張](http://www.fluentassertions.com/)を知っていますか? –

+0

NUnit、XUnit、または他のユニットテストフレームワークに切り替えるだけです。個人的に私はMSTestの構文がうまくいくことがわかり、最初の10回のテストを慣れてからすべて甘いものにします。 – zaitsman

+0

@RenéVogtそれを知らなかったし、私はカスタムメソッドで言語機能を破棄することに何の意味も見ません。私にはわかりにくく、勉強するには余分なものがあります。 – ygoe

答えて

7

メッセージが

値が正しくないだろうAssert.AreEqual(5, value, "Value is not correct.");であなたが受け取るメッセージは、5を期待

のようなものが含まれますif (value != 5) Assert.Fail("Value is not correct.");では代わりに

3を得ました。

アサーションエラーの原因となった値がないため、魔女の情報はあまり意味がありません。

0

MSTestは、非常に一般的なAAAパターン(arrange-act-assert)を使用します。 2番目の命令は、単体テストで経験を積んだ他のすべてのプログラマにとって読みにくくなります。 2番目のケースで追加情報を提供する必要がある場合は、メッセージを拡張し、期待値と実際の値を手動で指定する必要があります。これは、より多くのコーディングが必要となり、最初のケースでは避けることができます。

関連する問題