最近、新しいNUnitテストを書くときにAssert.Equals()メソッドを使用しようとしました。このメソッドを実行すると、 Assert.Equals should not be used for Assertions.
というように、AssertionException
がスローされます。何が起きてる?NUnitのAssert.Equals例外がスローされる "Assert.Equalsをアサーションに使用すべきではありません"
110
A
答えて
164
Assert
は、System.Objectを継承する静的クラスです。すべてのクラスが暗黙的にc#で実行されるためです。
static bool Equals(object a, object b)
等価比較のために意図されているアサートのメソッドがAssert.AreEqual()
メソッドです:System.Objectのは、次のメソッドを実装します。したがって、ユニットテストでAssertクラスを使用してObject.Equals()
メソッドを呼び出すことは間違いです。このミスを防止し、混乱を避けるために、NUnitの開発者は、意図的に例外をスローする実装で、AssertクラスにObject.Equals
を隠しました。ここでの実装があります:もちろん
/// <summary>
/// The Equals method throws an AssertionException. This is done
/// to make sure there is no mistake by calling this function.
/// </summary>
/// <param name="a"></param>
/// <param name="b"></param>
[EditorBrowsable(EditorBrowsableState.Never)]
public static new bool Equals(object a, object b)
{
// TODO: This should probably be InvalidOperationException
throw new AssertionException("Assert.Equals should not be used for Assertions");
}
例外メッセージ自体が紛らわしいですが、少なくともそれはあなたが間違っ何かをやったかを知ることができます。
3
tldr;
Assert.AreEqual(a, b); // <-- Compares a, b
ない:
Assert.Equals(a, b); // <-- Irrelevant equality operator on Assert itself
関連する問題
- 1. Assert.Equalsの使い方は?
- 2. のNUnit Assert.Equals <p>の違いは何ですか?</p>
- 3. NUnitの非同期テスト例外アサーション
- 4. PHP mail()は送信しませんが、例外はスローされません
- 5. 接続できませんがソケットは例外をスローしません
- 6. Visual StudioでNUnit GUIに例外をスローする方法は?
- 7. XmlReader.GetAttribute()は例外をスローしません
- 8. SaxParserは例外をスローしません
- 9. Jackson MapperはAndroidでは例外をスローしますが、Java SEでは例外をスローしません
- 10. 例外がスローされたことを確認するC++アサーション関数
- 11. Spring @Transactionはスローされた例外をロールバックしません
- 12. DeleteOnSubmitは:レコードが削除されず、例外はスローされません
- 13. FxCopはコマンドラインで例外をスローしますが、GUIでは例外をスローしませんか?
- 14. リソースの例外がありません
- 15. 関数のスロー指定にJavaチェック例外がありませんか?
- 16. C++で独自の例外をスローできません
- 17. セレニウム例外:セッションがありません。
- 18. 編集グリッドの行ダイアログ "例外がスローされ捕捉されません"
- 19. JPAクエリで例外がスローされる
- 20. すべてのテストクラスのカスタムTestExecutionListenerを設定するので、スローされたすべての例外/アサーションのスタックトレースを記録できます。
- 21. ワークフローは正しく実行されませんが例外はスローされません
- 22. Javaインターフェイスは例外をスローしますが、インターフェイス実装は例外をスローしません。
- 23. asp.netシリアライゼーション例外がスローされ
- 24. Ruby on Railsでgetを使用すると例外がスローされます
- 25. xamlでカスタムRoutedUICommandを使用すると例外がスローされます
- 26. Java例外:例外myExceptionは、対応するtryステートメントの本体でスローされません
- 27. テストで例外がスローされ、その例外が何かあった場合、NUnit TearDownでどのように知っていますか?
- 28. GDI +は例外をスローしません。大きな赤X
- 29. WCF Integration Facilityが例外をスローする:System.ServiceModelをロードできません。
- 30. 私がキャッチするAggregateExceptionは、例外がありません。
あなたは私たちにこれがあったことなど、特定のコードなど、いくつかのコンテキストを与えることはできますがでているのですか?どのような種類のオブジェクトを比較していましたか? –
申し訳ありませんが、私はすでにこの回答を見つけました。私は後輩のために答えを投稿できるように頼んだだけです。文脈は本当に重要ではありません。答えを読むことで分かります。私はこの答えが例外メッセージのWeb検索で簡単に発見できることを期待しています。 – Odrade
+1正直! – stannius