Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
| 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.