2011-12-14 9 views
7

私はNUnitをしばらく使っていましたが、私はAssertionHelperからテストクラスを引き出しています。ようにすることで、私のテストのような構文を使用します。NUnitでAssertionHelperを使用しない理由はありますか?

Expect(myValue, Is.EqualTo(3), "value wasn't equal to 3"); 

の代わり:

Assert.That(myValue, Is.EqualTo(3), "value wasn't equal to 3"); 

を私は見NUnitのとほぼすべての例では、Assert.That()構文を使用しますが、Expect()が(で、より理にかなっているようです少なくとも私に)私のコードから特定の動作を期待しています。

NUnitでAssertionHelperを使用することには欠点がありますか、それとも本当に味覚/スタイルの問題になっていますか?

ありがとうございます!

答えて

5

両方を同じように実行すると、IConstraintインターフェイスを実装するカスタム制約を指定できます。私の見解では、Assert()は少し軽いので、特別なクラスからすべてのテストフィクスチャを継承する義務はありません。ので、私は私の変数に名前を付ける方法の

0

、私のテストは、多くの場合、行で終わる:

Assert.That(actual, Is.EqualTo(expected)); 

IMOは、より良い(より流暢)よりも

Expect(actual, Is.EqualTo(expected)); 
1

AssertionHelperとの主な問題がある読み込みごく少数の人が使っているので、新しいNUnitの機能や制約は追加されない傾向があります。それは無視され広く使われていないので、NUnit team is considering removing itまたは別のパッケージにしてください。

チームはコミュニティからフィードバックを削除するかどうかを探していますので、お気軽にコメントしてください。

0

Rob Prouseは、NUnitチームがAssertionHelperを非推奨にしていることは間違いありません。私はそれが更新で廃止されたことを発見し、私はそれを維持することを約束した約8ヶ月間それを使用していた。その周りの議論は本当にゆっくりと進みました。私は少し気難しかったので、NugetにあるNUnit.StaticExpectを書いて、あなたのコードで "静的な使用"を使って、AssertionHelperの代わりにドロップインを提供しています。私はそれに生産プロジェクトを切り替え、うまくいっています。 これは、Chaiを彷彿とさせる構文を提供しますが、拡張性はJasmineに似ています。 NExpectはかなり使用可能な状態です - 私は自分のプロジェクトで今使っています。あなたはを通してアサーションの進化を観察するために使用することができますdemo projectあります:。

  1. アサート{具体的な方法}(例えばAssert.AreEqual)
  2. Assert.That({値またはラムダ}、{現在時制制約})
  3. AssertionHelperの使用
  4. NUnit.StaticExpectの使用
  5. NExpectの使用

と同様にTの例を与えますNExpectの拡張性お役に立てれば。

関連する問題