Sprache

TestFilterProviderAttribute<TFilter> Klasse

Definition

Stark typierte Variante, die TestFilterProviderAttributeTFilter als ITestFilter Implementierung registriert wird, die der MSTest-Adapter für jeden Test aufruft, der ausgeführt werden soll.

[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

Typparameter

TFilter

Die ITestFilter Implementierung zum Instanziieren und Aufrufen für jeden Test in der verwendeten Testassembly.

Vererbung
TestFilterProviderAttribute<TFilter>
Attribute

Beispiele

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

Hinweise

Dies ist die typsichere Form von [assembly: TestFilterProvider(typeof(MyFilter))]. Die generischen Einschränkungen erzwingen den Compiler zur Buildzeit, was das nicht generische Attribut nur zur Laufzeit überprüfen kann: TFilter muss einen öffentlichen parameterlosen Konstruktor implementieren ITestFilter und verfügbar machen.

Alles andere verhält sich genau wie TestFilterProviderAttribute, einschließlich der Regel "höchstens eine pro Testassembly" – die beiden Attribute zählen als eine und dieselbe Registrierung, sodass die Anwendung auf eine einzelne Assembly ein Fehler ist. Sie sind unterschiedliche Typen, sodass der Compiler dies nicht als dupliziertes Attribut meldet; MSTEST0081 erledigt.

Dieses Attribut ist nur verfügbar, wenn sie auf .NET ausgerichtet ist. Verwenden Sie im .NET Framework das nicht generische TestFilterProviderAttribute. Ein Testprojekt, bei dem beide Ziele mit mehreren Zielen das richtige Formular auswählen können:#if NET

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

Konstruktoren

Name Beschreibung
TestFilterProviderAttribute<TFilter>()

Stark typierte Variante, die TestFilterProviderAttributeTFilter als ITestFilter Implementierung registriert wird, die der MSTest-Adapter für jeden Test aufruft, der ausgeführt werden soll.

Gilt für: