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à | 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.