[解決済み] NUnitのAssert.Equalsで例外が発生する "Assert.Equalsはアサーションに使うべきではない" と言われた
2022-06-04 08:59:09
質問
最近、新しい NUnit テストを書くときに Assert.Equals() メソッドを使おうとしました。 このメソッドを実行すると
AssertionException
というステートメントが表示されます。
Assert.Equals should not be used for Assertions.
これは一見するとちょっと不可解です。 どうなっているのでしょうか?
どのように解決するのか?
Assert
は、C#ではすべてのクラスが暗黙のうちに行うように、System.Objectを継承した静的クラスです。System.Objectは以下のメソッドを実装しています。
static bool Equals(object a, object b)
Assert のメソッドのうち、等値比較のためのものは
Assert.AreEqual()
メソッドです。したがって
Object.Equals()
メソッドをユニットテスト内で Assert クラスを通して呼び出すことは、確かに間違いです。この間違いを防ぎ、混乱を避けるために、NUnitの開発者は意図的に非表示にしています。
Object.Equals
を Assert クラスに隠し、例外を発生させる実装にしています。以下がその実装です。
/// <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");
}
もちろん例外メッセージ自体は紛らわしいものですが、少なくとも、あなたが 何か をしたことを知らせてくれます。
関連
-
[解決済み】「The breakpoint will not currently be hit」を改善するには?このドキュメントにはシンボルが読み込まれていません。" という警告はどうすれば改善されますか?
-
[解決済み] WPFで角丸ボタンを作成する/作るには?
-
[解決済み] フレームワークとアーキテクチャの違いは何ですか?[クローズド]
-
[解決済み] 24:00:00 を超える値を持つ .Net Timespan を格納するための正しい SQL タイプは何ですか?
-
[解決済み] LINQ: フィルタリング基準で SingleOrDefault と FirstOrDefault() を使用する場合
-
[解決済み] このコンピュータには、.NET Framework 4.6またはそれ以降の更新プログラムがすでにインストールされています。
-
[解決済み] .NET Coreと.NET Standard Class Libraryのプロジェクトタイプの違いは何ですか?
-
[解決済み] Microsoft.ACE.OLEDB.12.0' プロバイダがローカルマシンに登録されていません。
-
[解決済み] C#のFinalize/Disposeメソッドの使用について
-
[解決済み】非同期処理の待ち時間、Wait()でプログラムがフリーズする原因はここにある
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】プラットフォームが同じでも「不正なフォーマットでプログラムを読み込もうとしました。
-
[解決済み】この動詞型ではcontent-bodyを送信できない
-
[解決済み] ポストバックまたはコールバックの引数が無効です。 イベント検証は '<pages enableEventValidation="true"/>' を使用して有効になっています。
-
[解決済み] Marginのプロパティ順
-
[解決済み] AssemblyInfo.csは何に使うのですか?
-
[解決済み] gacutil.exeはどこですか?
-
[解決済み] Moq Callbackについて教えてください。
-
[解決済み] パッケージのダウングレード警告を検出(dotnet core, vs 2017)
-
[解決済み] .NETでのdecimal, float, doubleの違い?
-
[解決済み] .NETで文字列から発音区分符号(アクセント)を削除するにはどうすればよいですか?