Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
| 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 | Sì |
| 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.