抑制ルールは、MSTest テストのコンテキストでは適用されない他のアナライザー (Roslyn や Visual Studio スレッド アナライザーなど) からの診断を自動的に抑制します。
このカテゴリのルール
| ルール ID | Title | 抑制 |
|---|---|---|
| MSTEST0027 | テスト メソッドの非同期サフィックスを抑制します。 | VSTHRD200 |
| MSTEST0028 | テストフィクスチャメソッドの非同期サフィックスを削除します。 | VSTHRD200 |
| MSTEST0033 | null 非許容参照が初期化されていないのを抑制します。 | CS8618 |
抑制ルールのしくみ
これらのルールでは、独自の診断は生成されません。 代わりに、テスト コードで誤ってトリガーされる他のアナライザーからの警告を抑制します。
VSTHRD200: 非同期メソッドにはAsyncサフィックスを使用する
抑制:MSTEST0027、 MSTEST0028
抑制する理由: 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
関連ドキュメント
.NET