Lingua

TestFilterProviderAttribute<TFilter> Classe

Definizione

Variante fortemente tipizzata di TestFilterProviderAttribute che viene registrata TFilter come implementazione che l'adapter ITestFilter MSTest richiama per ogni test che sta per essere eseguito.

[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

Parametri di tipo

TFilter

Implementazione ITestFilter di per creare un'istanza e richiamare per ogni test nell'assembly di test di utilizzo.

Ereditarietà
TestFilterProviderAttribute<TFilter>
Attributi

Esempio

[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;
}

Commenti

Si tratta della forma indipendente dai tipi di [assembly: TestFilterProvider(typeof(MyFilter))]. I vincoli generici impongono al compilatore, in fase di compilazione, ciò che l'attributo non generico può convalidare solo in fase di esecuzione: TFilter deve implementare ITestFilter ed esporre un costruttore pubblico senza parametri.

Tutto il resto si comporta esattamente come TestFilterProviderAttribute, inclusa la regola "al massimo uno per assembly di test", ovvero i due attributi vengono conteggiati come uno e la stessa registrazione, quindi l'applicazione di entrambi a un singolo assembly è un errore. Sono tipi distinti, quindi il compilatore non segnala che come attributo duplicato; MSTEST0081 lo fa.

Questo attributo è disponibile solo quando la destinazione è .NET. In .NET Framework usare l'oggetto non generico TestFilterProviderAttribute. Un progetto di test con più destinazioni può selezionare il modulo corretto con #if NET:

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

Costruttori

Nome Descrizione
TestFilterProviderAttribute<TFilter>()

Variante fortemente tipizzata di TestFilterProviderAttribute che viene registrata TFilter come implementazione che l'adapter ITestFilter MSTest richiama per ogni test che sta per essere eseguito.

Si applica a