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
詳細については、「コード分析の警告を抑制する方法」を参照してください。
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET