Langue

TestFilterProviderAttribute Classe

Définition

Inscrit une implémentation fournie par ITestFilter l’utilisateur que l’adaptateur MSTest appelle pour chaque test qu’il est sur le point d’exécuter, après tout filtre de ligne de commande (--filter, sélection de l’Explorateur de tests, etc.) a été appliqué.

[System.AttributeUsage(System.AttributeTargets.Assembly, AllowMultiple=false, Inherited=false)]
[System.Diagnostics.CodeAnalysis.Experimental("MSTESTEXP", UrlFormat="https://aka.ms/mstest/diagnostics#{0}")]
[System.Runtime.CompilerServices.Nullable(0)]
public sealed class TestFilterProviderAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Assembly, AllowMultiple=false, Inherited=false)]
public sealed class TestFilterProviderAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Assembly, AllowMultiple=false, Inherited=false)>]
[<System.Diagnostics.CodeAnalysis.Experimental("MSTESTEXP", UrlFormat="https://aka.ms/mstest/diagnostics#{0}")>]
[<System.Runtime.CompilerServices.Nullable(0)>]
type TestFilterProviderAttribute = class
    inherit Attribute
[<System.AttributeUsage(System.AttributeTargets.Assembly, AllowMultiple=false, Inherited=false)>]
type TestFilterProviderAttribute = class
    inherit Attribute
Public NotInheritable Class TestFilterProviderAttribute
Inherits Attribute
Héritage
TestFilterProviderAttribute
Attributs

Exemples

[assembly: TestFilterProvider(typeof(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

Appliquez cet attribut au niveau de l’assembly sur l’assembly de test lui-même. Au plus un TestFilterProviderAttribute peut être appliqué par assembly de test ; il s’agit d’intentionnel afin que l’ordre de filtrage ne fasse pas partie de l’API publique. Si plusieurs stratégies de filtrage sont nécessaires, composez-les explicitement à l’intérieur d’une seule ITestFilter implémentation.

Le type de filtre doit être non générique et instanciable , une classe concrète ou un struct, mais pas un ref struct — avec un constructeur sans paramètre public et doit implémenter ITestFilter. Une seule instance est créée par assembly de test par exécution de test et réutilisée pour chaque test de cet assembly.

Étant donné que le type de filtre est passé en tant que Type, aucune de ces exigences n’est vérifiée par le compilateur. L’analyseur MSTEST0081 les valide au moment de la génération. Sur .NET la variante générique TestFilterProviderAttribute<TFilter> applique également les ITestFilter exigences de constructeur sans paramètre public par le biais de ses contraintes génériques ; les autres sont toujours signalées par MSTEST0081.

Le filtre s’exécute avant le chargement du type de test, avant [AssemblyInitialize], avant [ClassInitialize], avant et avant que le constructeur de test soit appelé, de sorte que la suppression ou l’abandon d’un test par le biais ITestFilter évite de payer l’un de ces coûts.

Constructeurs

Nom Description
TestFilterProviderAttribute(Type)

Initialise une nouvelle instance de la classe TestFilterProviderAttribute.

Propriétés

Nom Description
FilterType

Obtient l’implémentation ITestFilter inscrite par cet attribut.

S’applique à