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 | Importancia |
|---|---|
| Identificador de la regla | MSTEST0063 |
| Título | Las clases de prueba deben tener constructores válidos |
| Categoría | Usage |
| La corrección es disruptiva o no disruptiva | Non-breaking |
| Habilitado de forma predeterminada | Sí |
| Gravedad predeterminada | Advertencia |
| introducido en la versión | 4.1.0 |
| ¿Hay una corrección de código? | No |
Causa
Una clase de prueba no tiene un constructor válido. Los constructores válidos son public y sin parámetros o tienen un único parámetro de tipo TestContext.
Descripción de la regla
Las clases de prueba deben tener un constructor público que sea sin parámetros o acepte un único TestContext parámetro. Esto permite que el framework de prueba instancie la clase de prueba adecuadamente.
Los constructores que no son públicos, tienen parámetros de tipos no admitidos o tienen varios parámetros no son válidos e impiden que el marco de pruebas cree instancias de la clase de prueba.
[TestClass]
public class MyTestClass
{
private MyTestClass() // Violation - constructor is not public
{
}
}
[TestClass]
public class MyTestClass
{
public MyTestClass(string value) // Violation - parameter type is not supported
{
}
}
[TestClass]
public class MyTestClass
{
public MyTestClass(TestContext testContext, int value) // Violation - multiple parameters
{
}
}
Cómo corregir infracciones
Asegúrese de que la clase de prueba tiene un constructor válido. Un constructor válido debe ser:
- Declarado como
public. - Sin parámetros o acepta un único TestContext parámetro.
Constructor sin parámetros
[TestClass]
public class MyTestClass
{
public MyTestClass()
{
}
[TestMethod]
public void TestMethod()
{
}
}
Constructor con TestContext
[TestClass]
public class MyTestClass
{
private readonly TestContext _testContext;
public MyTestClass(TestContext testContext)
{
_testContext = testContext;
}
[TestMethod]
public void TestMethod()
{
_testContext.WriteLine("Test is running...");
}
}
Constructor implícito sin parámetros
Si no define ningún constructor, el compilador genera automáticamente un constructor público sin parámetros:
[TestClass]
public class MyTestClass
{
[TestMethod]
public void TestMethod()
{
}
}
Constructores válidos y no válidos juntos
Si la clase de prueba tiene varios constructores, al menos uno debe ser válido:
[TestClass]
public class MyTestClass
{
public MyTestClass() // Valid - this makes the class valid
{
}
private MyTestClass(int x) // Invalid, but ignored because a valid constructor exists
{
}
[TestMethod]
public void TestMethod()
{
}
}
Cuándo suprimir las advertencias
No suprima advertencias de esta regla. Las clases de prueba sin constructores válidos no se pueden instanciar en el framework de pruebas, y las pruebas no se ejecutarán.
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 MSTEST0063
// The code that's violating the rule is on this line.
#pragma warning restore MSTEST0063
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.MSTEST0063.severity = none
Para obtener más información, consulte Cómo suprimir advertencias de análisis de código.