MSTEST0040:不要在 'async void' 上下文中進行斷言
財產 | 價值 |
---|---|
規則標識碼 | MSTEST0040 |
標題 | 不要在『async void』上下文中使用斷言 |
類別 | 用法 |
修正為中斷或非中斷的狀態 | 不間斷 |
預設為啟用 | 是的 |
預設嚴重性 | 警告 |
在版本 中引進 | 3.8.0 |
是否有程式碼修正 | 不 |
原因
在 async void
方法、本機函式或 Lambda 中使用任何斷言方法。
規則描述
在 async void
環境中擲出的例外狀況未被處理。 在 .NET Framework 下使用 VSTest 時,async void
方法中的失敗斷言將會被忽略,並且不會造成程序當機。 在 .NET 下,async void
方法中的失敗的斷言可能會在使用 Microsoft.Testing.Platform 或 VSTest 時導致程式崩潰。 如果存在攔截例外的自定義 SynchronizationContext
,失敗的斷言可能會被默默忽略。
如何修正違規
將程式代碼重構為不在 async void
中使用斷言。
隱藏警告的時機
請勿忽略此規則的警告。