TestFilterProviderAttribute<TFilter> Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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 |