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 | Sì |
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.