Idioma

TestFilterProviderAttribute<TFilter> Classe

Definição

Variante fortemente tipada que TestFilterProviderAttribute se registra TFilter como a ITestFilter implementação que o adaptador MSTest invoca para cada teste que está prestes a ser executado.

[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

Parâmetros de tipo

TFilter

A ITestFilter implementação para instanciar e invocar para cada teste no assembly de teste de consumo.

Herança
TestFilterProviderAttribute<TFilter>
Atributos

Exemplos

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

Comentários

Esta é a forma de tipo seguro de [assembly: TestFilterProvider(typeof(MyFilter))]. As restrições genéricas fazem com que o compilador imponha, em tempo de build, o que o atributo não genérico só pode validar em tempo de execução: TFilter deve implementar ITestFilter e expor um construtor público sem parâmetros.

Todo o resto se comporta exatamente como TestFilterProviderAttribute, incluindo a regra "no máximo um por assembly de teste" – os dois atributos contam como um e o mesmo registro, portanto, aplicar ambos a um único assembly é um erro. Eles são tipos distintos, portanto, o compilador não relata isso como um atributo duplicado; MSTEST0081 faz.

Esse atributo só está disponível ao direcionar .NET. No .NET Framework, use o não genérico TestFilterProviderAttribute. Um projeto de teste que tem vários destinos pode selecionar o formulário certo com #if NET:

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

Construtores

Nome Description
TestFilterProviderAttribute<TFilter>()

Variante fortemente tipada que TestFilterProviderAttribute se registra TFilter como a ITestFilter implementação que o adaptador MSTest invoca para cada teste que está prestes a ser executado.

Aplica-se a