Compartir vía


Reglas de diseño de MSTest

Las reglas de diseño le ayudan a crear y mantener conjuntos de pruebas que se adhieren al diseño adecuado y a los procedimientos recomendados. Estas reglas se centran en la estructura de pruebas, los procedimientos recomendados y los patrones comunes que conducen al código de prueba que se puede mantener.

Reglas de esta categoría

Identificador de la regla Title Severity Solución disponible
MSTEST0004 Los tipos públicos deben ser clases de prueba. Información
MSTEST0006 Evite el atributo ExpectedException. Información
MSTEST0015 No se debe omitir el método de prueba. Ninguno (opcional) No
MSTEST0016 La clase de prueba debe tener un método de prueba. Información No
MSTEST0019 Prefiere TestInitialize sobre constructores. Ninguno (registro voluntario)
MSTEST0020 Prefiere constructores sobre TestInitialize. Ninguno (opción de entrada)
MSTEST0021 Prefiere "Dispose" sobre "TestCleanup". Ninguno (participar)
MSTEST0022 Prefiere TestCleanup sobre Dispose. Ninguno (opcional)
MSTEST0025 Prefiere Assert.Fail sobre condiciones siempre falsas. Información
MSTEST0029 El método público debe ser método de prueba. Información
MSTEST0036 No use sombras. Advertencia No
MSTEST0044 Es preferible usar TestMethod en lugar de DataTestMethod. Información
MSTEST0045 Use la cancelación cooperativa para el tiempo de espera. Información

Escenarios frecuentes

Estructura de clase de prueba

Al crear clases de prueba, estas reglas ayudan a garantizar el diseño adecuado:

  • MSTEST0004: mantener las clases auxiliares internas, solo las clases de prueba deben ser públicas.
  • MSTEST0016: asegúrese de que las clases de prueba contienen al menos un método de prueba.
  • MSTEST0029: Los métodos públicos de las clases de prueba deben ser métodos de prueba.

Patrones de inicialización

MSTest admite constructores y métodos TestInitialize. Estas reglas mutuamente excluyentes permiten aplicar un patrón coherente:

  • MSTEST0019: aplicar TestInitialize para la inicialización (útil para escenarios asincrónicos).
  • MSTEST0020: exigir constructores para la inicialización (mejor para campos de solo lectura).

Patrones de limpieza

Del mismo modo, elija entre Dispose y TestCleanup:

  • MSTEST0021: Aplicar el patrón Dispose para la limpieza.
  • MSTEST0022: Aplicar TestCleanup para la limpieza.

Mejores aserciones

  • MSTEST0006: use Assert.ThrowsExactly en lugar de [ExpectedException] para mejorar la precisión.
  • MSTEST0025: use Assert.Fail en lugar de Assert.IsTrue(false).

Calidad de prueba

  • MSTEST0015: Identificar pruebas omitidas (regla opcional).
  • MSTEST0036: Evite ocultar miembros de la clase base.
  • MSTEST0044: Use TestMethod a menos que se necesiten pruebas basadas en datos.
  • MSTEST0045: habilite los tokens de cancelación para el control del tiempo de espera.