MSTEST0072: '[AssemblyFixtureProvider]' non è supportato con la compilazione anticipata

Proprietà Value
ID regola MSTEST0072
Titolo '[AssemblyFixtureProvider]' non è supportato con la compilazione anticipata
Categoria Utilizzo
La modifica è dirompente o non dirompente Non rompente
Abilitato per impostazione predefinita
Gravità predefinita Warning
introdotta nella versione 4.4.0 (anteprima)
È presente una correzione del codice No

Importante

Questo analizzatore è pianificato per MSTest 4.4 ed è disponibile solo nelle build di anteprima fino al rilascio di MSTest 4.4.0.

Cause

Un progetto si applica [AssemblyFixtureProvider]direttamente o tramite una libreria di riferimento, durante la pubblicazione con AOT nativo (PublishAot) o Blazor WebAssembly AOT (RunAOTCompilation).

Descrizione della regola

[AssemblyFixtureProvider] L'individuazione illustra il grafico dei riferimenti all'assembly di runtime, che richiede al runtime di generare codice dinamico. Le versioni di compilazione in anticipo, ad esempio Native AOT e Blazor WebAssembly AOT, non possono generare codice dinamico, quindi il runtime ignora automaticamente l'individuazione e i metodi della [AssemblyInitialize]/[AssemblyCleanup] fixture non vengono mai eseguiti.

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

L'analizzatore segnala questa diagnostica se l'attributo viene applicato nella compilazione corrente o in un assembly a cui si fa riferimento, perché in entrambi i casi l'utilizzo del progetto di test AOT nativo perde automaticamente le relative fixture di assembly.

Come correggere le violazioni

Dichiarare i [AssemblyInitialize] metodi e [AssemblyCleanup] direttamente nell'assembly di test anziché basarsi su una libreria condivisa [AssemblyFixtureProvider] .

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

Quando eliminare gli avvisi

Non eliminare gli avvisi da questa regola per un progetto che pubblica effettivamente con AOT nativo o Blazor WebAssembly AOT, perché i metodi della fixture non verranno eseguiti e qualsiasi stato configurato non esisterà per i test. L'eliminazione è ragionevole solo se la configurazione pubblicata da AOT non esegue i test interessati.

Eliminare un avviso

Se si vuole eliminare una singola violazione, aggiungere direttive del preprocessore al file di origine per disabilitare e quindi riabilitare la regola.

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

Per disabilitare la regola per un file, una cartella o un progetto, impostarne la gravità su none nel file di configurazione .

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

Per altre informazioni, vedere Come eliminare gli avvisi di analisi del codice.

Vedere anche