MSTEST0069: el generador de origen de MSTest omite [TestClass] heredado.

Propiedad Value
Identificador de la regla MSTEST0069
Title El generador de origen de MSTest omite [TestClass] heredado
Category Usage
La corrección es problemática o no problemática Non-breaking
Habilitado de forma predeterminada
Gravedad predeterminada Advertencia
introducido en la versión 4.3.0
¿Hay una corrección de código? No

Nota

Este analizador se incluye en el MSTest.SourceGeneration paquete y solo se carga para los proyectos que han optado por el generador de orígenes de reflexión MSTest, que es una característica experimental. No se aplica cuando se usa la detección predeterminada basada en reflexión.

Causa

Una clase está pensada como una clase de prueba msTest a través de un [TestClass] atributo que hereda de una clase base, en lugar de declarar [TestClass] directamente.

Descripción de la regla

El generador de origen de MSTest enumera las clases de prueba mediante ForAttributeWithMetadataName, que no sigue la herencia. Una clase que depende de heredar [TestClass] de un tipo base se omite silenciosamente de la detección generada por código fuente y no podrá ejecutarse cuando el proveedor generado por código fuente sea el backend de reflexión activo.

[TestClass]
public class BaseTests
{
}

// Violation: relies on the inherited [TestClass] attribute.
public class DerivedTests : BaseTests
{
    [TestMethod]
    public void Test()
    {
    }
}

Cómo corregir infracciones

Aplique [TestClass] directamente a la clase derivada para que se detecte cuando la detección generada por el origen esté activa.

[TestClass]
public class BaseTests
{
}

[TestClass]
public class DerivedTests : BaseTests
{
    [TestMethod]
    public void Test()
    {
    }
}

Cuándo suprimir las advertencias

No suprima las advertencias de esta regla cuando la generación de origen esté habilitada, ya que la clase de prueba afectada no se detectará ni ejecutará. Puede suprimirla si la clase no está pensada realmente para ser 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 MSTEST0069
// The code that's violating the rule is on this line.
#pragma warning restore MSTEST0069

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

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