MSTEST0012: il metodo AssemblyInitialize deve avere un layout valido

Proprietà Valore
ID regola MSTEST0012
Title Il metodo AssemblyInitialize deve avere un layout valido
Categoria Utilizzo
La correzione è incompatibile o compatibile con le versioni precedenti Senza interruzione
Abilitata per impostazione predefinita Sì
Gravità predefinita Avviso
Introdotto nella versione 3.3.0
È presente una correzione del codice Sì

Causa

Un metodo contrassegnato con [AssemblyInitialize] deve avere un layout valido.

Descrizione della regola

MSTest chiama [AssemblyInitialize] per preparare le risorse per l'assembly di test prima dell'esecuzione dei test:

Requirement Ragione
Il metodo è public static. MSTest individua un punto di ingresso del ciclo di vita pubblico e lo richiama senza un'istanza della classe di test. La configurazione dell'assembly appartiene all'intero assembly, non a un test.
Il metodo è ordinario e non è abstract o generico. MSTest richiede un corpo del metodo che possa invocare senza regole di chiamata speciali o argomenti del tipo di metodo.
Il metodo accetta esattamente un TestContext parametro. MSTest passa il contesto di inizializzazione dell'assembly direttamente al callback statico. Tale contesto descrive l'installazione dell'assembly, non una singola esecuzione di test.
Il tipo restituito è void, Task, o ValueTask, e il metodo non è async void. MSTest deve attendere la configurazione e osservarne gli errori prima di eseguire test che dipendono dalle risorse dell'assembly.
Il tipo dichiarante è una classe non generica contrassegnata con [TestClass] o con un attributo derivato da esso. MSTest individua i callback degli assembly tramite contenitori di classe di test. Un contenitore non generico identifica il callback senza richiedere argomenti di tipo della classe. Il contenitore può essere statico.
La classe dichiarante è publico internal con [assembly: DiscoverInternals]. Il contenitore deve essere accessibile secondo il contratto di individuazione di MSTest. L'individuazione interna non modifica il requisito che il callback stesso sia pubblico.

Per accedere alle informazioni per test anziché alle informazioni di inizializzazione dell'assembly, usare il TestContext dell'istanza di test. Consultare MSTEST0024.

Come correggere le violazioni

Assicurarsi che il metodo corrisponda al layout descritto in precedenza.

Quando eliminare gli avvisi

Non sopprimere un avviso da questa regola. Se si ignora questa regola, le istanze contrassegnate verranno ignorate o genereranno un errore di runtime.

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 MSTEST0012
// The code that's violating the rule is on this line.
#pragma warning restore MSTEST0012

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.MSTEST0012.severity = none

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