MSTEST0082: una clase de prueba hereda un ciclo de vida o un método de prueba de otra versión de MSTest

Propiedad Value
Identificador de la regla MSTEST0082
Title Una clase de prueba hereda un ciclo de vida o un método de prueba de otra versión de MSTest
Categoría Usage
La corrección es problemática o no problemática Non-breaking
Habilitado de forma predeterminada
Gravedad predeterminada Warning
introducido en la versión 4.4.0 (versión preliminar)
¿Hay una corrección de código? No

Importante

Este analizador está planeado para MSTest 4.4 y solo está disponible en compilaciones en versión preliminar hasta que se publique MSTest 4.4.0.

Causa

Una clase de prueba detectable hereda un método de prueba público o un método de ciclo de vida de un ensamblado que hace referencia a una versión principal diferente de MSTest.

Descripción de la regla

MSTest hace coincidir los atributos de prueba y de ciclo de vida mediante la identidad exacta del tipo en tiempo de ejecución. MSTest v3 define estos atributos en Microsoft.VisualStudio.TestPlatform.TestFramework, mientras que MSTest v4 los define en MSTest.TestFramework. Si una biblioteca base y un proyecto de prueba derivado usan versiones principales diferentes, el adaptador omite silenciosamente los atributos heredados del otro ensamblado de marco. Como resultado, las pruebas heredadas no se detectan y los métodos de inicialización o limpieza heredados no se ejecutan.

Por ejemplo, una biblioteca de pruebas compartida compilada con MSTest v3 podría declarar:

public abstract class SharedTests
{
    [TestMethod] public void InheritedTest() { }
}

Un proyecto de MSTest v4 que deriva de la clase base desencadena el diagnóstico:

[TestClass]
public sealed class ProductTests : SharedTests { } // Violation

El analizador comprueba los métodos de prueba heredados, los métodos de inicialización y limpieza de pruebas, así como los métodos de inicialización y limpieza de clases que están configurados para ejecutarse para las clases derivadas.

Cómo corregir infracciones

Haga referencia a la misma versión principal de MSTest desde la biblioteca base y el proyecto de prueba derivado. Vuelva a compilar el ensamblado que declara la clase base y, para un atributo personalizado derivado de un atributo MSTest, vuelva a compilar el ensamblado que declara el atributo personalizado.

Cuándo suprimir las advertencias

No suprima las advertencias de esta regla. Una infracción significa que MSTest omite silenciosamente las pruebas heredadas o los métodos de ciclo de vida.

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

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

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

Véase también