MSTEST0078: '[DependsOn]' 引数は有効である必要があります

財産
ルール識別子 MSTEST0078
タイトル '[DependsOn]' 引数は有効である必要があります
Category Usage
修正が破壊的か非破壊的か Non-breaking
既定で有効 Yes
既定の重大度 Warning
バージョン で導入された 4.4.0 (プレビュー)
コード修正はありますか No

Important

テスト依存関係は MSTest 4.4 用に計画されており、MSTest 4.4.0 がリリースされるまでプレビュー ビルドでのみ使用できます。

原因

[DependsOn]属性は名前でテストを参照します。参照には、テスト フレームワークが実行時にのみ決定できる問題 (存在しないターゲットなど) があります。

ルールの説明

テスト フレームワークでは、実行時にテストに一致しない [DependsOn] ターゲットが致命的でない警告として意図的に処理されるため、 --filter と単一テストの実行は機能し続けます。 つまり、入力ミスや名前変更によって、ビルドが失敗するのではなく、宣言された順序が自動的に削除されます。 このアナライザーは、ビルド時に決定できる問題を報告します。

  • 参照先のメソッドは、参照先の型に存在しません。
  • 参照されるメンバーはテスト メソッドではないので、依存関係は無視されます。
  • 参照される型はテスト クラスではないので、依存関係は無視されます。
  • 参照される型は別のアセンブリで宣言されます (依存関係は 1 つのテスト ソース内で解決されます)。
  • 参照される型は抽象型であるため、代わりに各派生テスト クラスでテストが実行されます。
  • この属性は、テストをそれ自体に依存させます。これは、実行時に失敗する依存関係サイクルです。
  • この属性は、コンパイルで表示される依存関係サイクルに参加します。この依存関係サイクルは、実行時にサイクル内のすべてのテストで失敗します。
  • 属性ターゲットがテスト メソッドではないか、テストを実行しないため、属性は効果のない場所に適用されます。
[TestMethod]
public void CreateCart() { }

[TestMethod, DependsOn("CreatCart")] // Violation: typo, no such member
public void AddItem() { }

違反を修正する方法

入力ミスや名前の変更を修正し、 nameof を使用して、ターゲットの名前を変更したときにコンパイラが参照を同期し続けます。

[TestMethod]
public void CreateCart() { }

[TestMethod, DependsOn(nameof(CreateCart))]
public void AddItem() { }

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

このルールからの警告は抑制しないでください。 このアナライザーによって報告される各ケースは、実行時に依存テスト (自己参照やサイクルなど) に失敗するか、入力ミスや非テスト メンバーへの参照など、宣言された順序を警告なしに削除します。

警告を抑制する

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

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

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

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

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

こちらも参照ください