Condividi tramite


MSTEST0040: non asserire all'interno di contesti "async void"

Proprietà Valore
ID regola MSTEST0040
Titolo Non eseguire asserzioni all'interno di contesti 'async void'
Categoria Uso
La correzione è un'interruzione o non interruzione Nessuna interruzione
Abilitato per impostazione predefinita
di gravità predefinita Avvertimento
introdotta nella versione 3.8.0
È presente una correzione del codice No

Causa

Uso di qualsiasi metodo di asserzione in un metodo async void, una funzione locale o un'espressione lambda.

Descrizione regola

Le eccezioni generate in un contesto di async void non vengono gestite. Un'asserzione con errori in un metodo async void verrà inghiottita e non arresterà il processo quando si usa VSTest in .NET Framework. In .NET un'asserzione con errori in un metodo async void potrebbe arrestare il processo quando si usa Microsoft.Testing.Platform o VSTest. Nei casi in cui è presente un SynchronizationContext personalizzato che intercetta l'eccezione, l'asserzione non riuscita potrebbe essere inghiottita in modo invisibile all'utente.

Come correggere le violazioni

Effettuare il refactoring del codice per non usare asserzioni in async void.

Quando eliminare gli avvisi

Non eliminare un avviso da questa regola.