Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
| Property | Value |
|---|---|
| ID da regra | MSTEST0072 |
| Título | '[AssemblyFixtureProvider]' não é suportado com compilação antecipada |
| Category | Usage |
| A correção é invasiva ou não invasiva | Inquebrável |
| Ativado por padrão | Sim |
| Severidade padrão | Warning |
| Introduzido na versão | 4.4.0 (pré-visualização) |
| Existe uma correção de código | Não |
Importante
Este analisador está planeado para o MSTest 4.4 e está disponível apenas em versões pré-visualizadas até ao lançamento do MSTest 4.4.0.
Motivo
Um projeto aplica-se [AssemblyFixtureProvider], seja diretamente ou através de uma biblioteca referenciada, enquanto é publicado com AOT nativo (PublishAot) ou Blazor WebAssembly AOT (RunAOTCompilation).
Descrição da regra
[AssemblyFixtureProvider] A descoberta percorre o grafo de referência de assembleia em tempo de execução, o que exige que o tempo de execução gere código dinâmico. Versões de compilação antecipadas como Native AOT e Blazor WebAssembly AOT não conseguem gerar código dinâmico, por isso o runtime ignora silenciosamente a descoberta, e os métodos do [AssemblyInitialize]/[AssemblyCleanup] fixture nunca correm.
// Violation: ignored at run time under Native AOT / Blazor WebAssembly AOT.
[assembly: AssemblyFixtureProvider(typeof(SharedFixtures))]
O analisador reporta este diagnóstico quer o atributo seja aplicado na compilação atual ou numa montagem referenciada, porque, de qualquer forma, o projeto de teste Native AOT que consome perde silenciosamente os seus fixos de montagem.
Como corrigir violações
Declare os [AssemblyInitialize] métodos e [AssemblyCleanup] diretamente no assembly de teste em vez de depender de uma biblioteca partilhada [AssemblyFixtureProvider] .
public static class Fixtures
{
[AssemblyInitialize]
public static void Init(TestContext context) { }
}
Quando suprimir avisos
Não suprimas avisos desta regra para um projeto que realmente publica com AOT nativo ou Blazor WebAssembly AOT, porque os métodos fixture não vão correr e qualquer estado que configurem não existirá para os teus testes. Suprimir é razoável apenas se a configuração publicada pelo AOT não executar os testes afetados.
Suprimir um aviso
Se você quiser apenas suprimir uma única violação, adicione diretivas de pré-processador ao seu arquivo de origem para desativar e, em seguida, reativar a regra.
#pragma warning disable MSTEST0072
// The code that's violating the rule is on this line.
#pragma warning restore MSTEST0072
Para desabilitar a regra de um arquivo, pasta ou projeto, defina sua gravidade 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.