語言

Assert.AreEquivalent 方法

定義

多載

名稱 Description
AreEquivalent<T>(ReadOnlyMemory<T>, ReadOnlyMemory<T>, Boolean, String, String, String)

測試兩個記憶區域在結構上是否等同(深度且對階敏感元素比較)。

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

測試兩個跨度在結構上是否等價(深度且對階敏感元素比較)。

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

測試兩個跨度在結構上是否等價(深度且對階敏感元素比較)。

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

測試兩個記憶區域在結構上是否等同(深度且對階敏感元素比較)。

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

測試兩個物件圖在結構上是否等價(深度等號),若不相同則拋出例外。

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

測試兩個跨度在結構上是否等價(深度且對階敏感元素比較)。

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

測試兩個記憶區域在結構上是否等同(深度且對階敏感元素比較)。

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

測試兩個物件圖在結構上是否等價(深度等號),若不相同則拋出例外。

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

測試兩個跨度在結構上是否等價(深度且對階敏感元素比較)。

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

測試兩個記憶區域在結構上是否等同(深度且對階敏感元素比較)。

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

測試兩個記憶區域在結構上是否等同(深度且對階敏感元素比較)。

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

類型參數

T

記憶體區域的元素類型。

參數

expected
ReadOnlyMemory<T>

測試所期望的記憶。

actual
ReadOnlyMemory<T>

被測試程式碼產生的記憶體。

strict
Boolean

當 true時,比較則以嚴格模式進行。

message
String

當斷言失敗時,例外中應包含訊息。

expectedExpression
String

預期的語法表達式由編譯器透過呼叫者參數表達式給出。 使用者不應該傳遞這個參數的值。

actualExpression
String

實際的語法表達式,由編譯器透過呼叫者參數表達式給出。 使用者不應該傳遞這個參數的值。

適用於

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

測試兩個跨度在結構上是否等價(深度且對階敏感元素比較)。

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

類型參數

T

跨度的元素類型。

參數

expected
Span<T>

測試預期的跨度。

actual
Span<T>

由被測程式碼產生的跨度。

strict
Boolean

當 true時,比較則以嚴格模式進行。

message
String

當斷言失敗時,例外中應包含訊息。

expectedExpression
String

預期的語法表達式由編譯器透過呼叫者參數表達式給出。 使用者不應該傳遞這個參數的值。

actualExpression
String

實際的語法表達式,由編譯器透過呼叫者參數表達式給出。 使用者不應該傳遞這個參數的值。

適用於

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

測試兩個跨度在結構上是否等價(深度且對階敏感元素比較)。

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

類型參數

T

跨度的元素類型。

參數

expected
ReadOnlySpan<T>

測試預期的跨度。

actual
ReadOnlySpan<T>

由被測程式碼產生的跨度。

strict
Boolean

當 true時,比較則以嚴格模式進行。

message
String

當斷言失敗時,例外中應包含訊息。

expectedExpression
String

預期的語法表達式由編譯器透過呼叫者參數表達式給出。 使用者不應該傳遞這個參數的值。

actualExpression
String

實際的語法表達式,由編譯器透過呼叫者參數表達式給出。 使用者不應該傳遞這個參數的值。

適用於

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

測試兩個記憶區域在結構上是否等同(深度且對階敏感元素比較)。

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

類型參數

T

記憶體區域的元素類型。

參數

expected
Memory<T>

測試所期望的記憶。

actual
Memory<T>

被測試程式碼產生的記憶體。

strict
Boolean

當 true時,比較則以嚴格模式進行。

message
String

當斷言失敗時,例外中應包含訊息。

expectedExpression
String

預期的語法表達式由編譯器透過呼叫者參數表達式給出。 使用者不應該傳遞這個參數的值。

actualExpression
String

實際的語法表達式,由編譯器透過呼叫者參數表達式給出。 使用者不應該傳遞這個參數的值。

適用於

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

來源:
Assert.AreEquivalent.cs

測試兩個物件圖在結構上是否等價(深度等號),若不相同則拋出例外。

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

要比較的第二個值。 這是被測試程式碼所產生的值。

strict
Boolean

當 true時,若 actual 宣告了 執行時型別中不存在 expected的公用屬性或欄位,或 上有額外的字典鍵數, actual則比較失敗。 當(預設值)時 false ,其他成員和字典鍵 actual 開啟會被忽略。 當執行expected時actual型別相同時,此旗標對公開成員比較不影響,但在比較字典時仍會拒絕額外的actual字典鍵。

message
String

當例外中包含 actual 的訊息不等 expected價於 。 該訊息會顯示在測試結果中。

expectedExpression
String

預期的語法表達式由編譯器透過呼叫者參數表達式給出。 使用者不應該傳遞這個參數的值。

actualExpression
String

實際的語法表達式,由編譯器透過呼叫者參數表達式給出。 使用者不應該傳遞這個參數的值。

例外狀況

若 expected 和 actual 結構不等價,則會被拋出。

適用於

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

測試兩個跨度在結構上是否等價(深度且對階敏感元素比較)。

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

類型參數

T

跨度的元素類型。

參數

expected
Span<T>

測試預期的跨度。

actual
Span<T>

由被測程式碼產生的跨度。

message
String

當斷言失敗時,例外中應包含訊息。

expectedExpression
String

預期的語法表達式由編譯器透過呼叫者參數表達式給出。 使用者不應該傳遞這個參數的值。

actualExpression
String

實際的語法表達式,由編譯器透過呼叫者參數表達式給出。 使用者不應該傳遞這個參數的值。

適用於

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

測試兩個記憶區域在結構上是否等同(深度且對階敏感元素比較)。

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

類型參數

T

記憶體區域的元素類型。

參數

expected
Memory<T>

測試所期望的記憶。

actual
Memory<T>

被測試程式碼產生的記憶體。

message
String

當斷言失敗時,例外中應包含訊息。

expectedExpression
String

預期的語法表達式由編譯器透過呼叫者參數表達式給出。 使用者不應該傳遞這個參數的值。

actualExpression
String

實際的語法表達式,由編譯器透過呼叫者參數表達式給出。 使用者不應該傳遞這個參數的值。

適用於

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

來源:
Assert.AreEquivalent.cs

測試兩個物件圖在結構上是否等價(深度等號),若不相同則拋出例外。

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

要比較的第二個值。 這是被測試程式碼所產生的值。

message
String

當例外中包含 actual 的訊息不等 expected價於 。 該訊息會顯示在測試結果中。

expectedExpression
String

預期的語法表達式由編譯器透過呼叫者參數表達式給出。 使用者不應該傳遞這個參數的值。

actualExpression
String

實際的語法表達式,由編譯器透過呼叫者參數表達式給出。 使用者不應該傳遞這個參數的值。

例外狀況

若 expected 和 actual 結構不等價,則會被拋出。

備註

此斷言對兩個物件圖進行深度且有序的結構比較。 它與 AreEquivalent(ICollection, ICollection)不同,後者僅檢查頂層集合的等價性,且不考慮元素順序。

比較規則如下:

  • 參考相等值(包括兩者 null)被視為等價。
  • 類似原始型態(數字BooleanCharString、枚舉、DateTime、DateTimeOffsetTimeSpanGuidUriType)Version與 比較。Equals(Object) 在目標上,這些框架對應它們,DateOnly、TimeOnly、HalfInt128UInt128,也被視為原始框架。
  • 如果某個值的靜態(編譯時)型別為 IEquatable<T> 自己實作, Equals(T) 則在該點停止遞迴。 純 Equals(Object) 覆寫會被忽略——比較器總是會遞迴回為這些的成員。
  • 字典(、IDictionaryIDictionary<TKey, TValue> 、 或 IReadOnlyDictionary<TKey,TValue>)依照鍵集進行比較,並以遞迴方式比較值。 查詢會透過原始碼字典來執行,因此 for IEqualityComparer<T> keys 會被保留。
  • 其他可枚舉(不含 String)則依迭代順序逐元素比較。 比較具有 順序敏感性;若順序無關緊要,則用於 AreEquivalent(ICollection, ICollection) 該收藏本身。
  • 其他參考類型則透過遞迴進入所有公開實例屬性(使用公開 getter 且無索引參數)及公開實例欄位來比較。 靜態、非公開及索引會員則被忽略。
  • 參考週期每對(預期、實際)的週期最多被追蹤和遍歷一次。 同樣的機制也強制圖拓撲:如果一側的相同參考與另一側的不同參照配對,該斷言即告失敗。
  • 如果使用者定義 Equals(T)的 、 成員獲取器或字典存取(TryGetValue、 ContainsKey、 或列舉)在評估過程中拋出 ,斷言會失敗,並會收到描述例外類型與訊息的訊息。
  • 比較在遞迴深度 StackOverflowException 有界後停止,以避免在異常深的物件圖上出現,並將該條件報告為斷言失敗。

適用於

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

測試兩個跨度在結構上是否等價(深度且對階敏感元素比較)。

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

類型參數

T

跨度的元素類型。

參數

expected
ReadOnlySpan<T>

測試預期的跨度。

actual
ReadOnlySpan<T>

由被測程式碼產生的跨度。

message
String

當斷言失敗時,例外中應包含訊息。

expectedExpression
String

預期的語法表達式由編譯器透過呼叫者參數表達式給出。 使用者不應該傳遞這個參數的值。

actualExpression
String

實際的語法表達式,由編譯器透過呼叫者參數表達式給出。 使用者不應該傳遞這個參數的值。

適用於

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

測試兩個記憶區域在結構上是否等同(深度且對階敏感元素比較)。

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

類型參數

T

記憶體區域的元素類型。

參數

expected
ReadOnlyMemory<T>

測試所期望的記憶。

actual
ReadOnlyMemory<T>

被測試程式碼產生的記憶體。

message
String

當斷言失敗時,例外中應包含訊息。

expectedExpression
String

預期的語法表達式由編譯器透過呼叫者參數表達式給出。 使用者不應該傳遞這個參數的值。

actualExpression
String

實際的語法表達式,由編譯器透過呼叫者參數表達式給出。 使用者不應該傳遞這個參數的值。

適用於