次の方法で共有


MSTest 抑制ルール

抑制ルールは、MSTest テストのコンテキストでは適用されない他のアナライザー (Roslyn や Visual Studio スレッド アナライザーなど) からの診断を自動的に抑制します。

このカテゴリのルール

ルール ID Title 抑制
MSTEST0027 テスト メソッドの非同期サフィックスを抑制します。 VSTHRD200
MSTEST0028 テストフィクスチャメソッドの非同期サフィックスを削除します。 VSTHRD200
MSTEST0033 null 非許容参照が初期化されていないのを抑制します。 CS8618

抑制ルールのしくみ

これらのルールでは、独自の診断は生成されません。 代わりに、テスト コードで誤ってトリガーされる他のアナライザーからの警告を抑制します。

VSTHRD200: 非同期メソッドにはAsyncサフィックスを使用する

抑制:MSTEST0027MSTEST0028

抑制する理由: Visual Studio スレッド アナライザー (VSTHRD200) では、非同期メソッドに "Async" サフィックスを付けるべきであることをお勧めします。 ただし、テスト メソッドとテスト フィクスチャ メソッドは、名前付け規則ではなく属性を使用して MSTest によって検出されます。 テスト メソッド名 (たとえば、 TestLoginAsync) に "Async" サフィックスを追加すると、値が提供されなくなり、テスト名の読みやすさが低下する可能性があります。

:

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

CS8618: null 非許容参照が初期化されていません

抑制されました: MSTEST0033

抑制の理由: null 許容参照型を使用すると、コンパイラがコンストラクタで初期化されていない非 null 許容プロパティに対して警告を出します。 ただし、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