Assert.AreEquivalent メソッド

定義

オーバーロード

名前 説明
AreEquivalent<T>(T, T, Boolean, String, String, String)

2 つのオブジェクト グラフが構造的に等価 (深い等値) であるかどうかをテストし、そうでない場合は例外をスローします。

AreEquivalent<T>(T, T, String, String, String)

2 つのオブジェクト グラフが構造的に等価 (深い等値) であるかどうかをテストし、そうでない場合は例外をスローします。

AreEquivalent<T>(T, T, Boolean, String, String, String)

ソース:
Assert.AreEquivalent.cs

2 つのオブジェクト グラフが構造的に等価 (深い等値) であるかどうかをテストし、そうでない場合は例外をスローします。

public static void AreEquivalent<T>(T? expected, T? actual, bool strict, string? message = "", string expectedExpression = "", string actualExpression = "");
static member AreEquivalent : 'T * 'T * bool * string * string * string -> unit
Public Shared Sub AreEquivalent(Of T) (expected As T, actual As T, strict As Boolean, Optional message As String = "", Optional expectedExpression As String = "", Optional actualExpression As String = "")

型パラメーター

T

比較する値の型。

パラメーター

expected
T

比較する最初の値。 これは、テストで想定される値です。

actual
T

比較する 2 番目の値。 これは、テスト対象のコードによって生成される値です。

strict
Boolean

trueすると、actualexpectedのランタイム型に存在しないパブリック プロパティまたはフィールドを宣言した場合、または追加のディクショナリ キーがactualに存在する場合、比較は失敗します。 false (既定値) の場合、actualの追加のメンバーキーとディクショナリ キーは無視されます。 expectedactualのランタイムの種類が同一の場合、このフラグはパブリック メンバーの比較には影響しませんが、ディクショナリの比較時にactualの追加のディクショナリ キーを拒否します。

message
String

actualexpectedと同等でない場合に例外に含めるメッセージ。 メッセージがテスト結果に表示されます。

expectedExpression
String

呼び出し元の引数式を介してコンパイラによって指定された、予期される構文式。 ユーザーは、このパラメーターの値を渡さないでください。

actualExpression
String

呼び出し元の引数式を介してコンパイラによって指定された実際の構文式。 ユーザーは、このパラメーターの値を渡さないでください。

例外

expectedactualが構造的に等しくない場合にスローされます。

適用対象

AreEquivalent<T>(T, T, String, String, String)

ソース:
Assert.AreEquivalent.cs

2 つのオブジェクト グラフが構造的に等価 (深い等値) であるかどうかをテストし、そうでない場合は例外をスローします。

public static void AreEquivalent<T>(T? expected, T? actual, string? message = "", string expectedExpression = "", string actualExpression = "");
static member AreEquivalent : 'T * 'T * string * string * string -> unit
Public Shared Sub AreEquivalent(Of T) (expected As T, actual As T, Optional message As String = "", Optional expectedExpression As String = "", Optional actualExpression As String = "")

型パラメーター

T

比較する値の型。

パラメーター

expected
T

比較する最初の値。 これは、テストで想定される値です。

actual
T

比較する 2 番目の値。 これは、テスト対象のコードによって生成される値です。

message
String

actualexpectedと同等でない場合に例外に含めるメッセージ。 メッセージがテスト結果に表示されます。

expectedExpression
String

呼び出し元の引数式を介してコンパイラによって指定された、予期される構文式。 ユーザーは、このパラメーターの値を渡さないでください。

actualExpression
String

呼び出し元の引数式を介してコンパイラによって指定された実際の構文式。 ユーザーは、このパラメーターの値を渡さないでください。

例外

expectedactualが構造的に等しくない場合にスローされます。

注釈

このアサーションは、2 つのオブジェクト グラフの深い順序に依存する構造比較を実行します。 要素の順序に関係なく最上位レベルのコレクションの等価性のみをチェックする AreEquivalent(ICollection, ICollection)とは異なります。

比較規則は次のとおりです。

  • 参照と等しい値 (両方の nullを含む) は等価と見なされます。
  • プリミティブ型 (数値、 BooleanCharString、列挙型、 DateTimeDateTimeOffsetTimeSpanGuidUriTypeVersion) は、 Equals(Object)と比較されます。 それらを出荷するターゲット フレームワークでは、 DateOnlyTimeOnlyHalfInt128UInt128 もプリミティブのように扱われます。
  • 値の静的 (コンパイル時) 型がそれ自体の IEquatable<T> を実装する場合、 Equals(T) が使用され、その時点で再帰が停止します。 プレーン Equals(Object) オーバーライドは無視されます。比較子は常にそれらのメンバーに再帰します。
  • ディクショナリ (IDictionaryIDictionary<TKey, TValue>、または IReadOnlyDictionary<TKey,TValue>) はキー セットによって比較され、値は再帰的に比較されます。 参照はソース ディクショナリを介してルーティングされるため、キーの IEqualityComparer<T> は保持されます。
  • その他の列挙可能な値 ( Stringを除く) は、要素ごとに反復順序で比較されます。 比較は 順序に依存します。順序が無関係な場合は、コレクション自体に AreEquivalent(ICollection, ICollection) を使用します。
  • その他の参照型は、すべてのパブリック インスタンス プロパティ (パブリック getter とインデックス パラメーターなし) とパブリック インスタンス フィールドを繰り返して比較されます。 静的メンバー、非パブリック メンバー、およびインデックス付きメンバーは無視されます。
  • 参照サイクルは、(予想される、実際の) ペアごとに最大 1 回追跡され、走査されます。 同じメカニズムによってグラフ トポロジが適用されます。一方の側の同じ参照が他方の側の異なる参照とペアになっている場合、アサーションは失敗します。
  • 評価中にユーザー定義の Equals(T)、メンバー ゲッター、またはディクショナリ アクセス (TryGetValueContainsKey、または列挙) がスローされた場合、アサーションは例外の種類とメッセージを説明するメッセージで失敗します。
  • 比較は、異常に深いオブジェクト グラフの StackOverflowException を回避するために、有界再帰深度の後に停止し、その状態をアサーションエラーとして報告します。

適用対象