Langue

TestFilterProviderAttribute<TFilter> Classe

Définition

Variante fortement typée de TestFilterProviderAttribute ce registre TFilter en tant qu’implémentation que l’adaptateur ITestFilter MSTest appelle pour chaque test qu’il est sur le point d’exécuter.

[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

Paramètres de type

TFilter

Implémentation ITestFilter permettant d’instancier et d’appeler chaque test dans l’assembly de test consommateur.

Héritage
TestFilterProviderAttribute<TFilter>
Attributs

Exemples

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

Remarques

Il s’agit de la forme de type-safe de [assembly: TestFilterProvider(typeof(MyFilter))]. Les contraintes génériques rendent le compilateur appliquer, au moment de la génération, ce que l’attribut non générique ne peut valider qu’au moment de l’exécution : TFilter doit implémenter ITestFilter et exposer un constructeur sans paramètre public.

Tout le reste se comporte exactement comme TestFilterProviderAttribute, y compris la règle « au plus un par assembly de test », les deux attributs comptent comme un et la même inscription, de sorte que l’application des deux à un seul assembly est une erreur. Il s’agit de types distincts. Le compilateur ne signale donc pas qu’il s’agit d’un attribut en double ; MSTEST0081 fait.

Cet attribut n’est disponible que lorsque vous ciblez .NET. Sur .NET Framework, utilisez l’infrastructure non génériqueTestFilterProviderAttribute. Un projet de test avec lequel les deux cibles peuvent sélectionner le formulaire approprié avec #if NET:

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

Constructeurs

Nom Description
TestFilterProviderAttribute<TFilter>()

Variante fortement typée de TestFilterProviderAttribute ce registre TFilter en tant qu’implémentation que l’adaptateur ITestFilter MSTest appelle pour chaque test qu’il est sur le point d’exécuter.

S’applique à