MemberConditionAttribute 類別

定義

根據一個或多個 staticBoolean 成員 Type (屬性、欄位或無參數方法)的值,條件式地執行或忽略一個測試類別或測試方法,這些成員由成員名稱引用。

[System.AttributeUsage(System.AttributeTargets.Class | System.AttributeTargets.Method, AllowMultiple=true, Inherited=false)]
public sealed class MemberConditionAttribute : Microsoft.VisualStudio.TestTools.UnitTesting.ConditionBaseAttribute
[System.AttributeUsage(System.AttributeTargets.Class | System.AttributeTargets.Method, AllowMultiple=true, Inherited=false)]
[System.Runtime.CompilerServices.Nullable(0)]
public sealed class MemberConditionAttribute : Microsoft.VisualStudio.TestTools.UnitTesting.ConditionBaseAttribute
[<System.AttributeUsage(System.AttributeTargets.Class | System.AttributeTargets.Method, AllowMultiple=true, Inherited=false)>]
type MemberConditionAttribute = class
    inherit ConditionBaseAttribute
[<System.AttributeUsage(System.AttributeTargets.Class | System.AttributeTargets.Method, AllowMultiple=true, Inherited=false)>]
[<System.Runtime.CompilerServices.Nullable(0)>]
type MemberConditionAttribute = class
    inherit ConditionBaseAttribute
Public NotInheritable Class MemberConditionAttribute
Inherits ConditionBaseAttribute
繼承
MemberConditionAttribute
屬性

備註

當一個屬性提供多個成員名稱時,其值會與邏輯 AND 結合:該屬性IsConditionMet只有在每個被參考成員都值為 true時才為 true

每個 MemberConditionAttribute 實例都形成獨立 GroupName的 ,因此在同一目標上堆疊多個 MemberConditionAttribute 宣告會與邏輯 AND 結合,與其他測試框架的典型 [ConditionalFact] 使用模式相符。

若無法找到該參考成員作為 publicstaticBoolean 屬性、欄位或無參數方法,或(對於方法)需要參數 IsConditionMet ,則計算會 InvalidOperationException拋出 。 這會以測試錯誤的形式出現,而非靜默跳過,避免錯字和重構誤造成測試失效。

這個屬性不是遺傳的。 套用到基底類別不會影響衍生類別。

[TestMethod]
[MemberCondition(typeof(Environment), nameof(Environment.Is64BitProcess))]
public void Only_Runs_On_64Bit() { }

[TestMethod]
[MemberCondition(typeof(PlatformDetection),
    nameof(PlatformDetection.IsNotBrowser),
    nameof(PlatformDetection.IsThreadingSupported))]
public void Requires_Threading_And_Not_Browser() { }

[TestMethod]
[MemberCondition(ConditionMode.Exclude, typeof(PlatformDetection), nameof(PlatformDetection.IsMonoRuntime))]
public void Does_Not_Run_On_Mono() { }

建構函式

名稱 Description
MemberConditionAttribute(ConditionMode, Type, String, String[])

初始化 MemberConditionAttribute 類別的新執行個體。

MemberConditionAttribute(ConditionMode, Type, String)

初始化 MemberConditionAttribute 類別的新執行個體。

MemberConditionAttribute(Type, String, String[])

初始化一個新的類別實例 MemberConditionAttribute ,並以 Include 語意為基礎:測試僅在每個被參考成員都評估為 true時執行。

MemberConditionAttribute(Type, String)

以語意初始化該類別Include的新實例MemberConditionAttribute:測試僅在被參考成員評估為 true時執行。

屬性

名稱 Description
ConditionMemberNames

取得該條件評估時ConditionType成員staticBoolean(屬性、欄位或無參數方法)的名稱。 多個值會結合邏輯 AND。

ConditionType

取得用來宣告 static 用來評估條件的成員的型別。

GroupName

會獲得這個屬性的群組名稱。 當多個繼承 ConditionBaseAttribute 屬性存在時,這點尤為重要。 IsConditionMet同一群組中的屬性值會被「或」合併。 而不同群組的價值則是「AND」合而為一。 換句話說,如果任何一個群的所有值都為 IsConditionMet 假,該檢定將被忽略。

IgnoreMessage

會收到或設定忽略訊息,說明忽略測試方法或測試類別的原因。

(繼承來源 ConditionBaseAttribute)
IsConditionMet

獲得一個表示條件是否被滿足的值。 這個屬性的實作不應該讀取該 Mode 屬性。

Mode

會進入狀態模式。

(繼承來源 ConditionBaseAttribute)

適用於