MSTEST0011: ClassCleanup メソッドには有効なレイアウトが必要
プロパティ | 値 |
---|---|
ルール ID | MSTEST0011 |
Title | ClassCleanup メソッドには有効なレイアウトが必要 |
カテゴリ | 使用法 |
修正が中断ありか中断なしか | なし |
既定で有効 | はい |
既定の重要度 | 警告 |
導入されたバージョン | 3.3.0 |
コード修正の有無 | はい |
原因
[ClassCleanup]
というマークが付いたメソッドには、有効なレイアウトが必要です。
規則の説明
[ClassCleanup]
というマークが付いたメソッドを有効にするには、以下のレイアウトに従う必要があります。
InheritanceBehavior
モードが設定されていない場合、ジェネリック クラス上で宣言することはできません- これは
public
である必要があります - これは
static
である必要があります - これを
async void
にすることはできません - これを特殊なメソッド (ファイナライザー、演算子など) にすることはできません。
- これをジェネリックにすることはできません
- パラメーターを受け取らない (MSTest 3.8 以降では、単一の
TestContext
パラメーターを使用できます) - 戻り値の型は
void
、Task
、ValueTask
のどれかである必要があります - クラスが
InheritanceBehavior.BeforeEachDerivedClass
の場合は、abstract
属性パラメーターを指定する必要があります。 - クラスが
InheritanceBehavior.BeforeEachDerivedClass
の場合は、sealed
属性パラメーターを指定する必要はありません。
これらのメソッドを宣言する型は、次の規則にも従う必要があります。
- 型は、
class
である必要があります。 class
はpublic
またはinternal
である必要があります (テスト プロジェクトが[DiscoverInternals]
属性を使用する場合)。class
はstatic
にしないようにする必要があります。class
がsealed
である場合は、[TestClass]
(または派生型の属性) のマークを付ける必要があります。
- クラスはジェネリックにしないようにする必要があります
違反の修正方法
メソッドが上記で説明したレイアウトと一致していることを確認してください。
どのようなときに警告を抑制するか
この規則による警告は抑制しないでください。 このルールを無視すると、フラグが立ったインスタンスはスキップされるか、ランタイム エラーを引き起こします。
警告を抑制する
単一の違反を抑制するだけの場合は、プリプロセッサ ディレクティブをソース ファイルに追加して無効にしてから、ルールを再度有効にします。
#pragma warning disable MSTEST0011
// The code that's violating the rule is on this line.
#pragma warning restore MSTEST0011
ファイル、フォルダー、またはプロジェクトのルールを無効にするには、その重大度を 構成ファイルに none
に設定します。
[*.{cs,vb}]
dotnet_diagnostic.MSTEST0011.severity = none
詳細については、「コード分析の警告を抑制する方法」を参照してください。
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET