Language

MSTEST0002: テスト クラスには有効なレイアウトが必要です

プロパティ [値]
ルール ID MSTEST0002
タイトル テスト クラスには有効なレイアウトが必要です
カテゴリ 使用
修正が破壊的か非破壊的か あり
既定で有効 あり
既定の重大度 警告
導入されたバージョン 3.2.0
コード修正の有無 あり

原因

テスト クラスが無効なアクセシビリティを持っているか、またはテスト メソッドもしくはクラス/テストごとのライフサイクル メソッドを宣言しているにもかかわらず静的です。

規則の説明

MSTest は、テスト メソッド、テストごとの状態、およびライフサイクル コールバックを所有するフィクスチャとしてテスト クラスを使用します。 この規則では、その実行モデルをサポートする静的クラスの可視性と使用をチェックします。

Requirement 理由
クラスは public、または [assembly: DiscoverInternals] を備えた internal です。 MSTest は、公にアクセスできる種類を既定の検出コントラクトとして使用します。 アセンブリ属性は、アセンブリの外部に公開することなく、内部テスト クラスの利用を明示的に許可します。
テストまたはクラス/テストごとのライフサイクル メソッドを含むクラスは static ではありません。 MSTest は、テスト実行ごとにテスト クラス インスタンスを作成します。 そのインスタンスは、すべてのテストで共有されている状態ではなく、テストのフィールドと TestContext を保持します。 静的クラスはインスタンスを提供できません。

ジェネリック 基底クラスは本質的に無効ではありません。 MSTest では、テスト インスタンスを作成するために具象型が必要であるため、実行可能クラスには完全に指定された型引数が必要です。 ジェネリック抽象基本クラスは、これらの引数を指定する具象派生クラスに継承されたテストを提供できます。

静的クラスには、テスト クラス インスタンスを必要としないアセンブリまたはグローバル ライフサイクル メソッドを含めることができます。 詳細については、「 MSTest ライフサイクル」を参照してください。

違反の修正方法

クラスが上記で説明した必要なレイアウトと一致していることを確認してください。

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

この規則による警告は抑制しないでください。 MSTest はこのクラスをテスト クラスとは見なさないため、このルールを無視すると、テストは無視されます。

警告を抑制する

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

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

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

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

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