Lenguaje

MSTEST0002: las clases de prueba deben tener un diseño válido

Propiedad Valor
Identificador de la regla MSTEST0002
Título Las clases de prueba deben tener un diseño válido
Categoría Uso
La corrección es problemática o no problemática Problemático
Habilitado por defecto Sí
Gravedad predeterminada Advertencia
Introducido en la versión 3.2.0
Hay una corrección de código Sí

Causa

Una clase de prueba tiene una accesibilidad no válida o es estática mientras declara los métodos de prueba o los métodos del ciclo de vida de la clase o por prueba.

Descripción de la regla

MSTest usa una clase de prueba como la fijación que posee los métodos de prueba, el estado por prueba y las devoluciones de llamada del ciclo de vida. Esta regla comprueba la visibilidad y el uso de clases estáticas para admitir ese modelo de ejecución:

Requirement Reason
La clase es public, o internal con [assembly: DiscoverInternals]. MSTest usa los tipos de acceso público como su contrato de detección predeterminado. El atributo de ensamblado habilita explícitamente las clases de prueba internas sin exponerlas fuera del ensamblado.
Una clase que contiene pruebas o métodos de ciclo de vida de clase o por prueba no es static. MSTest crea una instancia de clase de prueba para cada ejecución de prueba. Esa instancia conserva los campos y TestContext de la prueba, en lugar del estado compartido por todas las pruebas. Una clase estática no puede proporcionar una instancia.

Las clases base genéricas no son intrínsecamente inválidas. MSTest necesita un tipo concreto para crear una instancia de prueba, por lo que las clases ejecutables deben tener argumentos de tipo totalmente especificados. Una clase base abstracta genérica puede proporcionar pruebas heredadas a clases derivadas concretas que especifican esos argumentos.

Las clases estáticas pueden contener métodos de ciclo de vida global o de assembly, que no requieren una instancia de clase de prueba. Para obtener más información, consulte Ciclo de vida de MSTest.

Cómo corregir infracciones

Asegúrese de que el método de prueba coincide con el diseño necesario descrito anteriormente.

Cuándo suprimir las advertencias

No suprima las advertencias de esta regla. Omitir esta regla dará lugar a que se omitan las pruebas, ya que MSTest no considerará que esta clase es una clase 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 MSTEST0002
// The code that's violating the rule is on this line.
#pragma warning restore MSTEST0002

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.MSTEST0002.severity = none

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