MSTEST0040: Nie używaj asercji wewnątrz kontekstów "async void"
Własność | Wartość |
---|---|
identyfikator reguły | MSTEST0040 |
Tytuł | Nie używaj asercji wewnątrz kontekstów 'async void' |
Kategoria | Użytkowanie |
Poprawka powoduje problem lub go nie powoduje | Niezgodność |
włączone domyślnie | Tak |
domyślna ważność | Ostrzeżenie |
wprowadzone w wersji | 3.8.0 |
czy istnieje poprawka kodu | Nie |
Przyczyna
Użycie dowolnej metody asercji w metodzie async void
, funkcji lokalnej lub lambda.
Opis reguły
Wyjątki zgłaszane w kontekście async void
są nieobsługiwane. Niepowodzenie asercji w metodzie async void
zostanie zignorowane i nie spowoduje awarii procesu podczas korzystania z narzędzia VSTest pod .NET Framework. W przypadku platformy .NET niepowodzenie asercji w metodzie async void
może spowodować awarię procesu podczas korzystania z platformy Microsoft.Testing.Platform lub VSTest. W przypadkach, gdy istnieje niestandardowy SynchronizationContext
, który przechwytuje wyjątek, nieudane założenie może być niezauważalnie ignorowane.
Jak naprawić naruszenia
Refaktoryzuj kod, aby nie używać asercji w async void
.
Kiedy pomijać ostrzeżenia
Nie pomijaj ostrzeżenia z tej reguły.