Język

TestFilterProviderAttribute<TFilter> Klasa

Definicja

Silnie typizowane warianty TestFilterProviderAttributeTFilter tego rejestrują się jako implementacja ITestFilter karty MSTest wywołuje dla każdego testu, który ma zostać uruchomiony.

[System.AttributeUsage(System.AttributeTargets.Assembly, AllowMultiple=false, Inherited=false)]
[System.Diagnostics.CodeAnalysis.Experimental("MSTESTEXP", UrlFormat="https://aka.ms/mstest/diagnostics#{0}")]
public sealed class TestFilterProviderAttribute<TFilter> : Attribute where TFilter : ITestFilter, new()
[<System.AttributeUsage(System.AttributeTargets.Assembly, AllowMultiple=false, Inherited=false)>]
[<System.Diagnostics.CodeAnalysis.Experimental("MSTESTEXP", UrlFormat="https://aka.ms/mstest/diagnostics#{0}")>]
type TestFilterProviderAttribute<'Filter (requires 'Filter :> ITestFilter and 'Filter : (new : unit -> 'Filter))> = class
    inherit Attribute
Public NotInheritable Class TestFilterProviderAttribute(Of TFilter)
Inherits Attribute

Parametry typu

TFilter

Implementacja ITestFilter do tworzenia wystąpień i wywoływania dla każdego testu w zestawie testowym zużywających.

Dziedziczenie
TestFilterProviderAttribute<TFilter>
Atrybuty

Przykłady

[assembly: TestFilterProvider<NightlyFilter>]

public sealed class NightlyFilter : ITestFilter
{
    public TestFilterResult Filter(TestFilterContext context)
        => context.Categories.Contains("Nightly")
            && Environment.GetEnvironmentVariable("RUN_NIGHTLY") != "1"
            ? TestFilterResult.Skip("Set RUN_NIGHTLY=1 to run nightly tests.")
            : TestFilterResult.Run;
}

Uwagi

Jest to bezpieczna dla typu forma [assembly: TestFilterProvider(typeof(MyFilter))]. Ograniczenia ogólne sprawiają, że kompilator wymusza w czasie kompilacji to, co atrybut niegeneryczny może weryfikować tylko w czasie wykonywania: TFilter musi implementować ITestFilter i uwidaczniać publiczny konstruktor bez parametrów.

Wszystko inne zachowuje się dokładnie tak jak TestFilterProviderAttribute, w tym regułę "co najwyżej jeden na zestaw testowy" — dwa atrybuty są liczone jako jedna i ta sama rejestracja, więc zastosowanie obu do pojedynczego zestawu jest błędem. Są to odrębne typy, więc kompilator nie zgłasza tego jako zduplikowanego atrybutu; MSTEST0081 nie.

Ten atrybut jest dostępny tylko podczas określania wartości docelowej .NET. W .NET Framework użyj nieogólne TestFilterProviderAttribute. Projekt testowy, który obsługuje wiele obiektów docelowych, może wybrać odpowiedni formularz za pomocą polecenia #if NET:

#if NET
[assembly: TestFilterProvider<MyFilter>]
#else
[assembly: TestFilterProvider(typeof(MyFilter))]
#endif

Konstruktory

Nazwa Opis
TestFilterProviderAttribute<TFilter>()

Silnie typizowane warianty TestFilterProviderAttributeTFilter tego rejestrują się jako implementacja ITestFilter karty MSTest wywołuje dla każdego testu, który ma zostać uruchomiony.

Dotyczy