共用方式為


MSTest 歸併規則

抑制規則會自動抑制不適用於 MSTest 測試環境的其他診斷分析器(如 Roslyn 或 Visual Studio 執行緒分析器)。

此類別的規則

規則識別碼 Title 抑制
MSTEST0027 取消測試方法中的非同步後綴。 VSTHRD200
MSTEST0028 測試夾具方法時,請抑制非同步後綴。 VSTHRD200
MSTEST0033 忽略尚未初始化的不可空參考。 CS8618

抑制規則的運作方式

這些規則本身並不產生診斷結果。 相反地,它們會抑制其他分析器發出的警告,否則在測試程式碼中會錯誤觸發。

VSTHRD200:對非同步方法使用 Async 後綴

被抑制於:MSTEST0027MSTEST0028

為什麼要抑制:Visual Studio 執行緒分析器(VSTHRD200)建議非同步方法應該加上「Async」後綴。 然而,測試方法與測試夾具方法是由 MSTest 透過屬性而非命名慣例來發現的。 在測試方法名稱中加上「非同步」後綴(例如) TestLoginAsync則無意義,且可能使測試名稱更難辨識。

範例

[TestMethod]
public async Task TestLogin() // VSTHRD200 would warn without suppression
{
    await LoginAsync();
    // ...
}

CS8618:不可空除的參考未初始化

被壓制者MSTEST0033

為什麼要忽略:在使用可空參考型別時,編譯器會針對未在建構函式中初始化的非可空屬性發出警告。 不過,MSTest 會在執行任何測試方法前自動初始化該 TestContext 屬性,因此警告不會生效。

範例

[TestClass]
public class MyTests
{
    public TestContext TestContext { get; set; } = null!; // CS8618 would warn without suppression
    
    [TestMethod]
    public void TestSomething()
    {
        // TestContext is guaranteed to be non-null here
        TestContext.WriteLine("Test output");
    }
}

停用抑制規則

如果你想看到這些警告,請在你的 .editorconfig 中停用抑制規則:

[*.cs]
dotnet_diagnostic.MSTEST0027.severity = none
dotnet_diagnostic.MSTEST0028.severity = none
dotnet_diagnostic.MSTEST0033.severity = none