次の方法で共有


MSTEST0018: DynamicData は有効である必要がある

プロパティ
ルール ID MSTEST0018
Title DynamicData は有効である必要がある
カテゴリ 使用法
修正が中断ありか中断なしか なし
既定で有効 はい
既定の重要度 警告
導入されたバージョン 3.6.0

原因

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

規則の説明

[DynamicData]でマークされたメソッドも [TestMethod] (または派生属性) でマークする必要があります。

参照される「データ ソース」メンバー:

  • 指定した型に存在する必要があります (型が指定されていない場合は現在のクラス)
  • オーバーロードを持つべきではありません
  • DataSourceType プロパティと同じ種類 (メソッドまたはプロパティ) である必要があります
  • public でなければなりません
  • static でなければなりません
  • 汎用であってはなりません
  • パラメーターなしにする必要があります
  • IEnumerable<object[]>IEnumerable<Tuple<T,...>> または IEnumerable<ValueTuple<,...>> を返す必要があります。

参照される「表示名」メンバー:

  • 指定した型に存在する必要があります (型が指定されていない場合は現在のクラス)
  • オーバーロードを持つべきではありません
  • メソッドである必要があります
  • public でなければなりません
  • static でなければなりません
  • 汎用であってはなりません
  • string を返す必要があります
  • ちょうど 2 つのパラメーターを受け取る必要があります (最初のパラメーターは MethodInfo で 2 番目のパラメーターは object[])

例:

public static string GetDisplayName(MethodInfo methodInfo, object[] data)
{
    return string.Format("{0} ({1})", methodInfo.Name, string.Join(",", data));
}

違反の修正方法

属性が上記の条件と一致していることを確認します。

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

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

警告を抑制する

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

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

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

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

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