MSTEST0078: los argumentos '[DependsOn]' deben ser válidos

Propiedad Value
Identificador de la regla MSTEST0078
Title Los argumentos '[DependsOn]' deben ser válidos
Category Usage
La corrección es disruptiva o no disruptiva Non-breaking
Habilitado de forma predeterminada Yes
Gravedad predeterminada Warning
introducido en la versión 4.4.0 (versión preliminar)
¿Hay una corrección de código? No

Importante

Las dependencias de prueba están planeadas para MSTest 4.4 y solo están disponibles en compilaciones en versión preliminar hasta que se publique MSTest 4.4.0.

Causa

Un [DependsOn] atributo hace referencia a una prueba por nombre y la referencia tiene un problema que el marco de pruebas puede decidir solo en tiempo de ejecución, como un destino que no existe.

Descripción de la regla

El marco de pruebas trata deliberadamente un [DependsOn] destino que no coincide con ninguna prueba como una advertencia no irrecuperable en tiempo de ejecución, de modo que --filter y las ejecuciones de prueba única sigan funcionando. Esto significa que un error tipográfico o un cambio de nombre quita silenciosamente la ordenación declarada en lugar de generar errores. Este analizador notifica los problemas que se pueden decidir en tiempo de compilación:

  • El método al que se hace referencia no existe en el tipo al que se hace referencia.
  • El miembro al que se hace referencia no es un método de prueba, por lo que se omite la dependencia.
  • El tipo al que se hace referencia no es una clase de prueba, por lo que se omite la dependencia.
  • El tipo al que se hace referencia se declara en otro ensamblado (las dependencias se resuelven dentro de un único origen de prueba).
  • El tipo al que se hace referencia es abstracto, por lo que sus pruebas se ejecutan en cada clase de prueba derivada en su lugar.
  • El atributo hace que una prueba dependa de sí misma, que es un ciclo de dependencia que produce un error en tiempo de ejecución.
  • El atributo participa en un ciclo de dependencia que está visible en la compilación, lo que produce un error en cada prueba del ciclo en tiempo de ejecución.
  • El atributo se aplica donde no tiene ningún efecto, ya que el destino del atributo no es un método de prueba o no ejecuta ninguna prueba.
[TestMethod]
public void CreateCart() { }

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

Cómo corregir infracciones

Corrija el tipográfico o cambie el nombre y úselo nameof para que el compilador mantenga sincronizada la referencia al cambiar el nombre del destino.

[TestMethod]
public void CreateCart() { }

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

Cuándo suprimir las advertencias

No omitas las advertencias de esta regla. Cada caso notificado por este analizador produce un error en la prueba dependiente en tiempo de ejecución, como una referencia automática o un ciclo, o quita silenciosamente la ordenación declarada, como un error tipográfico o una referencia a un miembro que no es de prueba.

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 MSTEST0078
// The code that's violating the rule is on this line.
#pragma warning restore MSTEST0078

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

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

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

Véase también