Comparteix a través de


MSTEST0018: DynamicData debe ser válido

Propiedad Value
Identificador de la regla MSTEST0018
Título DynamicData debe ser válido
Categoría Uso
La corrección es problemática o no problemática Poco problemático
Habilitado de forma predeterminada
Gravedad predeterminada Advertencia
Introducido en la versión 3.6.0

Causa

Un método marcado con [DynamicData] debería tener un diseño válido.

Descripción de la regla

Los métodos marcados con [DynamicData] también deben marcarse con [TestMethod] (o un atributo derivado).

El miembro "origen de datos" al que se hace referencia:

  • debe existir en el tipo especificado (clase actual si no se indica ningún tipo).
  • no debe tener sobrecargas
  • debe ser del mismo tipo (método o propiedad) que la propiedad DataSourceType
  • debe ser public
  • debe ser static
  • no se debe ser genérico
  • no debe tener parámetros
  • debe devolver IEnumerable<object[]>, IEnumerable<Tuple<T,...>> o IEnumerable<ValueTuple<,...>>

El miembro "nombre para mostrar" al que se hace referencia:

  • debe existir en el tipo especificado (clase actual si no se indica ningún tipo).
  • no debe tener sobrecargas
  • debe ser un método
  • debe ser public
  • debe ser static
  • no se debe ser genérico
  • debe devolver string
  • debe tomar exactamente 2 parámetros, el primero MethodInfo y el segundo object[]

Ejemplo:

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

Cómo corregir infracciones

Asegúrese de que el atributo se ajusta a las condiciones descritas anteriormente.

Cuándo suprimir las advertencias

No suprima las advertencias de esta regla. Si se omite esta regla, se omitirán las instancias marcadas o se producirá un error en tiempo de ejecución.

Supresión de una advertencia

Si solo quiere suprimir una única infracción, agregue directivas de preprocesador al archivo de origen para deshabilitar y volver a habilitar la regla.

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

Para deshabilitar la regla de un archivo, una carpeta o un proyecto, establezca su gravedad en none del archivo de configuración.

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

Para obtener más información, consulte Procedimiento para suprimir advertencias de análisis de código.