次の方法で共有


MSTEST0010: ClassInitialize メソッドには有効なレイアウトが必要

プロパティ
ルール ID MSTEST0010
Title ClassInitialize メソッドには有効なレイアウトが必要
カテゴリ 使用法
修正が中断ありか中断なしか なし
既定で有効 はい
既定の重要度 警告
導入されたバージョン 3.3.0
コード修正の有無 はい

原因

[ClassInitialize] というマークが付いたメソッドには、有効なレイアウトが必要です。

規則の説明

[ClassInitialize] というマークが付いたメソッドを有効にするには、以下のレイアウトに従う必要があります。

  • InheritanceBehavior モードが設定されていない場合、ジェネリック クラス上で宣言することはできません
  • これは public である必要があります
  • これは static である必要があります
  • これを async void にすることはできません
  • これを特殊なメソッド (ファイナライザー、演算子など) にすることはできません。
  • ジェネリックにすることはできません
  • TestContext のパラメーターを 1 つ取る必要があります
  • 戻り値の型は voidTaskValueTask のいずれかである必要があります
  • クラスが InheritanceBehavior.BeforeEachDerivedClass の場合は、abstract 属性パラメーターを指定する必要があります。
  • クラスが InheritanceBehavior.BeforeEachDerivedClass の場合は、sealed 属性パラメーターを指定する必要はありません。

これらのメソッドを宣言する型は、次の規則にも従う必要があります。

  • 型は、class である必要があります。
  • classpublic または internal である必要があります (テスト プロジェクトが [DiscoverInternals] 属性を使用する場合)。
  • classstatic にしないようにする必要があります。
  • classsealed である場合は、[TestClass] (または派生型の属性) のマークを付ける必要があります。
  • クラスはジェネリックにしないようにする必要があります

違反の修正方法

メソッドが上記で説明したレイアウトと一致していることを確認してください。

どのようなときに警告を抑制するか

この規則による警告は抑制しないでください。 このルールを無視すると、フラグが立ったインスタンスはスキップされるか、ランタイム エラーを引き起こします。

警告を抑制する

単一の違反を抑制するだけの場合は、プリプロセッサ ディレクティブをソース ファイルに追加して無効にしてから、ルールを再度有効にします。

#pragma warning disable MSTEST0010
// The code that's violating the rule is on this line.
#pragma warning restore MSTEST0010

ファイル、フォルダー、またはプロジェクトのルールを無効にするには、その重大度を 構成ファイルnone に設定します。

[*.{cs,vb}]
dotnet_diagnostic.MSTEST0010.severity = none

詳細については、「コード分析の警告を抑制する方法」を参照してください。