Поделиться через


MSTEST0018: DynamicData должен быть допустимым

Свойство Значение
Идентификатор правила MSTEST0018
Заголовок DynamicData должен быть допустимым
Категория Использование
Исправление является критическим или не критическим Не критическое
Включен по умолчанию Да
Серьезность по умолчанию Предупреждение
Представлено в версии 3.6.0

Причина

Метод, помеченный как [DynamicData] допустимый макет.

Описание правила

Методы, помеченные с [DynamicData] помощью атрибута, также должны быть помечены ( [TestMethod] или производным атрибутом).

На элемент "источник данных", на который ссылается:

  • должен существовать в указанном типе (текущий класс, если тип не указан)
  • не должно иметь перегрузки
  • должен иметь тот же тип (метод или свойство), что DataSourceType и свойство.
  • должно быть public
  • должно быть static
  • не должно быть универсальным
  • должен быть без параметров
  • значение должно возвращать IEnumerable<object[]>IEnumerable<Tuple<T,...>> илиIEnumerable<ValueTuple<,...>>

На элемент "отображаемое имя", на который ссылается:

  • должен существовать в указанном типе (текущий класс, если тип не указан)
  • не должно иметь перегрузки
  • должен быть методом
  • должно быть public
  • должно быть static
  • не должно быть универсальным
  • должен возвращать string
  • должен принимать ровно 2 параметра, первое и второе —MethodInfoobject[]

Пример:

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

Чтобы отключить правило для файла, папки или проекта, задайте его серьезность в файле конфигурации.

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

Дополнительные сведения см. в статье Подавление предупреждений анализа кода.