MSTEST0072: '[AssemblyFixtureProvider]' não tem suporte com compilação antecipada

Property Value
ID da regra MSTEST0072
Título Não há suporte para '[AssemblyFixtureProvider]' com compilação antecipada
Categoria Uso
Correção é disruptiva ou não disruptiva Inquebrável
Habilitado por padrão Sim
Severidade padrão Warning
introduzido na versão 4.4.0 (versão prévia)
Há uma correção de código Não

Importante

Este analisador está planejado para MSTest 4.4 e está disponível apenas em builds de visualização até que o MSTest 4.4.0 seja lançado.

Cause

Um projeto se aplica [AssemblyFixtureProvider], diretamente ou por meio de uma biblioteca referenciada, durante a publicação com AOT nativo (PublishAot) ou Blazor WebAssembly AOT (RunAOTCompilation).

Descrição da regra

[AssemblyFixtureProvider] A descoberta explica o grafo de referência do assembly de runtime, que exige que o runtime gere código dinâmico. Tipos de compilação antecipada, como AOT Nativo e Blazor WebAssembly AOT, não podem gerar código dinâmico, portanto, o runtime ignora silenciosamente a descoberta e os métodos da [AssemblyInitialize]/[AssemblyCleanup] instalação nunca são executados.

// Violation: ignored at run time under Native AOT / Blazor WebAssembly AOT.
[assembly: AssemblyFixtureProvider(typeof(SharedFixtures))]

O analisador relata esse diagnóstico se o atributo é aplicado na compilação atual ou em um assembly referenciado, porque de qualquer maneira o projeto de teste AOT nativo que consome silenciosamente perde seus acessórios de assembly.

Como corrigir violações

Declare os [AssemblyInitialize] métodos e [AssemblyCleanup] diretamente no assembly de teste em vez de depender de uma biblioteca compartilhada [AssemblyFixtureProvider] .

public static class Fixtures
{
    [AssemblyInitialize]
    public static void Init(TestContext context) { }
}

Quando suprimir avisos

Não suprime avisos dessa regra para um projeto que realmente é publicado com AOT nativo ou Blazor WebAssembly AOT, pois os métodos de instalação não serão executados e nenhum estado configurado não existirá para seus testes. A supressão será razoável somente se a configuração publicada por AOT não executar os testes afetados.

Suprimir um aviso

Se você quiser suprimir apenas uma única violação, adicione diretivas de pré-processador ao arquivo de origem para desabilitar a regra e, em seguida, habilitá-la novamente.

#pragma warning disable MSTEST0072
// The code that's violating the rule is on this line.
#pragma warning restore MSTEST0072

Para desabilitar a regra em um arquivo, uma pasta ou um projeto, defina a severidade como none no arquivo de configuração.

[*.{cs,vb}]
dotnet_diagnostic.MSTEST0072.severity = none

Para obter mais informações, consulte Como suprimir avisos de análise de código.

Consulte também