Compartir vía


Reglas de uso de MSTest

Las reglas de uso admiten el uso adecuado de los atributos, métodos y patrones de MSTest. Estas reglas detectan errores comunes y garantizan que las pruebas siguen los requisitos y convenciones del marco.

Reglas de esta categoría

Identificador de la regla Title Severity Solución disponible
MSTEST0002 La clase de prueba debe ser válida. Advertencia
MSTEST0003 El método de prueba debe ser válido. Advertencia → Error
MSTEST0005 TestContext debe ser válido. Advertencia
MSTEST0007 Use el atributo en el método de prueba. Advertencia No
MSTEST0008 TestInitialize debe ser válido. Advertencia
MSTEST0009 TestCleanup debe ser válido. Advertencia
MSTEST0010 ClassInitialize debe ser válido. Advertencia
MSTEST0011 ClassCleanup debe ser válido. Advertencia
MSTEST0012 AssemblyInitialize debe ser válido. Advertencia
MSTEST0013 AssemblyCleanup debe ser válido. Advertencia
MSTEST0014 DataRow debe ser válido. Advertencia
MSTEST0017 Los argumentos de aserción deben pasarse en orden correcto. Información
MSTEST0018 DynamicData debe ser válido. Advertencia
MSTEST0023 No niegues la aserción booleana. Información
MSTEST0024 No almacene static TestContext. Advertencia No
MSTEST0026 Los argumentos de aserción deben evitar el acceso condicional. Información No
MSTEST0030 El tipo que contiene el método de prueba debe ser una clase de prueba. Advertencia
MSTEST0031 No utilice System.ComponentModel.DescriptionAttribute. Información
MSTEST0032 Revise siempre la condición de aserción verdadera. Información No
MSTEST0034 Utilice ClassCleanupBehavior.EndOfClass. Información
MSTEST0035 Utilice DeploymentItem con un método de prueba o una clase de prueba. Información No
MSTEST0037 Utilice métodos de aserción adecuados. Información
MSTEST0038 Evite el uso de Assert.AreSame con tipos de valor. Información
MSTEST0039 Use los métodos Assert.Throws más recientes. Información
MSTEST0040 Evite usar aserciones en contexto de void asincrónico. Advertencia No
MSTEST0041 Use atributos basados en condiciones con la clase de prueba. Advertencia No
MSTEST0042 Fila de datos duplicada. Advertencia No
MSTEST0043 Use el atributo retry en el método de prueba. Advertencia → Error
MSTEST0046 Use Assert en lugar de StringAssert. Información
MSTEST0048 Uso de propiedades TestContext. Advertencia No
MSTEST0049 Flow TestContext CancellationToken. Información
MSTEST0050 El dispositivo de prueba global debe ser válido. Advertencia
MSTEST0051 Assert.Throws debe contener una sola instrucción. Información
MSTEST0052 Evite el DynamicDataSourceType explícito. Información
MSTEST0053 Evite los parámetros de formato Assert. Información
MSTEST0054 Utilice la propiedad CancellationToken. Información
MSTEST0055 No omita el valor devuelto del método de cadena. Advertencia No
MSTEST0056 TestMethodAttribute debe establecer DisplayName correctamente. Información
MSTEST0057 TestMethodAttribute debe propagar la información de origen. Advertencia No
MSTEST0058 Evite afirmaciones en bloques de captura. Información No
MSTEST0059 Use el atributo Parallelize correctamente. Advertencia No
MSTEST0060 TestMethodAttribute duplicado. Advertencia
MSTEST0061 Use el atributo OSCondition en lugar de la comprobación en tiempo de ejecución. Información
MSTEST0062 Evite los parámetros de método de prueba de tipo out/ref. Advertencia
MSTEST0063 La clase de prueba debe tener un constructor válido. Advertencia No

* Escalado a Error en los modos Recommended y All.

Escenarios frecuentes

Validación de la estructura de prueba

Asegúrese de que las clases de prueba, los métodos y los accesorios siguen los requisitos de MSTest:

  • MSTEST0002: probar los requisitos de diseño de clase (por ejemplo, públicos y no estáticos).
  • MSTEST0003: requisitos de diseño del método de prueba (️⚠ elevado a error).
  • MSTEST0030: los métodos con [TestMethod] deben estar en un [TestClass].
  • MSTEST0063: validación del constructor de clase de prueba.

Métodos de ciclo de vida

Valide los métodos de inicialización y limpieza:

Pruebas controladas por datos

Asegúrese de que los atributos de datos se usan correctamente:

  • MSTEST0007: los atributos de datos deben estar en métodos de prueba.
  • MSTEST0014: validación de DataRow.
  • MSTEST0018: validación de DynamicData.
  • MSTEST0042: detectar filas de datos duplicadas.
  • MSTEST0052: use AutoDetect para DynamicDataSourceType.
  • MSTEST0062: evite parámetros de salida/referencia.

Escritura de mejores aserciones

Reglas para el uso correcto y eficaz de aserciones:

  • MSTEST0017: pase el valor esperado o real en orden correcto.
  • MSTEST0023: No niegues las condiciones (utiliza Assert.IsFalse directamente).
  • MSTEST0026: evite los operadores condicionales NULL en las aserciones.
  • MSTEST0032: Revisar las condiciones siempre verdaderas.
  • MSTEST0037: use el método de aserción más adecuado.
  • MSTEST0038: no use AreSame con tipos de valor.
  • MSTEST0039: use Assert.ThrowsExactly (API más reciente).
  • MSTEST0046: Se recomienda usar Assert en lugar de StringAssert.
  • MSTEST0051: Assert.Throws debe probar una sola instrucción.
  • MSTEST0053: use la interpolación de cadenas en lugar de los parámetros de formato.
  • MSTEST0058: no coloque aserciones en bloques catch.

Uso de TestContext

Uso adecuado del objeto TestContext:

  • MSTEST0005: validación de propiedades TestContext.
  • MSTEST0024: no almacene TestContext en campos estáticos.
  • MSTEST0048: acceso restringido a las propiedades en entornos de prueba.
  • MSTEST0049: tokens de cancelación de flujo de TestContext.
  • MSTEST0054: use la propiedad TestContext.CancellationToken.

Patrones asincrónicos

Reglas para el código de prueba asincrónico:

  • MSTEST0040: Evite las aserciones en métodos void asincrónicos.

Configuración de prueba

  • MSTEST0031: Use los atributos adecuados (no System.ComponentModel.Description).
  • MSTEST0035: uso de DeploymentItem.
  • MSTEST0041: los atributos de condición deben estar en clases de prueba.
  • MSTEST0043: los atributos de reintento deben estar en métodos de prueba (️⚠ escalado a Error).
  • MSTEST0055: no omita los valores devueltos del método de cadena.
  • MSTEST0056: establezca DisplayName correctamente en TestMethodAttribute.
  • MSTEST0057: Propaga la información de origen en un TestMethodAttribute personalizado.
  • MSTEST0059: no use Parallelize ni DoNotParallelize.
  • MSTEST0060: evite el duplicado TestMethodAttribute.
  • MSTEST0061: use el atributo OSCondition para las comprobaciones de plataforma.