Rediger

Del via


MSTEST0040: Do not assert inside 'async void' contexts

Property Value
Rule ID MSTEST0040
Title Do not assert inside 'async void' contexts
Category Usage
Fix is breaking or non-breaking Non-breaking
Enabled by default Yes
Default severity Warning
Introduced in version 3.8.0
Is there a code fix No

Cause

The use of any assertion method in an async void method, local function, or lambda.

Rule description

Exceptions that are thrown in an async void context are unhandled. A failing assertion in an async void method will be swallowed and will not crash the process when using VSTest under .NET Framework. Under .NET, a failing assertion in an async void method might crash the process when using Microsoft.Testing.Platform or VSTest. In cases where a custom SynchronizationContext is present that catches the exception, the failing assertion might be silently swallowed.

How to fix violations

Refactor the code to not use assertions in async void.

When to suppress warnings

Do not suppress a warning from this rule.