Lenguaje
Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
| 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.