Поделиться через


MSTEST0040: Не выполняйте утверждения внутри контекстов 'async void'

Свойство Ценность
идентификатор правила MSTEST0040
Заголовок Не выполняйте утверждения в контекстах 'async void'
категория Употребление
исправление является критическим или неразрывным Неразрывная
включен по умолчанию Да
Уровень серьезности по умолчанию Предупреждение
представлено в версии 3.8.0
Есть ли исправление кода Нет

Причина

Использование любого метода утверждения в методе async void, локальной функции или лямбда-выражении.

Описание правила

Исключения, возникающие в контексте async void, остаются необработанными. Неудачное утверждение в методе async void будет проглочено и не приведет к сбою процесса при использовании VSTest в .NET Framework. При использовании Microsoft.Testing.Platform или VSTest в .NET сбой утверждения в методе async void может привести к аварийному завершению процесса. В случаях, когда присутствует пользовательская SynchronizationContext, которая перехватывает исключение, неудачное утверждение может быть незаметно проглочено.

Устранение нарушений

Переделайте код, чтобы не использовать ассерции в async void.

Когда следует подавлять предупреждения

Не подавляйте предупреждение, вызванное этим правилом.