TestFilterProviderAttribute<TFilter> Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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 |