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.
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 | Sí |
| MSTEST0003 | El método de prueba debe ser válido. | Advertencia → Error | Sí |
| MSTEST0005 | TestContext debe ser válido. | Advertencia | Sí |
| MSTEST0007 | Use el atributo en el método de prueba. | Advertencia | No |
| MSTEST0008 | TestInitialize debe ser válido. | Advertencia | Sí |
| MSTEST0009 | TestCleanup debe ser válido. | Advertencia | Sí |
| MSTEST0010 | ClassInitialize debe ser válido. | Advertencia | Sí |
| MSTEST0011 | ClassCleanup debe ser válido. | Advertencia | Sí |
| MSTEST0012 | AssemblyInitialize debe ser válido. | Advertencia | Sí |
| MSTEST0013 | AssemblyCleanup debe ser válido. | Advertencia | Sí |
| MSTEST0014 | DataRow debe ser válido. | Advertencia | Sí |
| MSTEST0017 | Los argumentos de aserción deben pasarse en orden correcto. | Información | Sí |
| MSTEST0018 | DynamicData debe ser válido. | Advertencia | Sí |
| MSTEST0023 | No niegues la aserción booleana. | Información | Sí |
| 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 | Sí |
| MSTEST0031 | No utilice System.ComponentModel.DescriptionAttribute. | Información | Sí |
| MSTEST0032 | Revise siempre la condición de aserción verdadera. | Información | No |
| MSTEST0034 | Utilice ClassCleanupBehavior.EndOfClass. | Información | Sí |
| 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 | Sí |
| MSTEST0038 | Evite el uso de Assert.AreSame con tipos de valor. | Información | Sí |
| MSTEST0039 | Use los métodos Assert.Throws más recientes. | Información | Sí |
| 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 | Sí |
| MSTEST0046 | Use Assert en lugar de StringAssert. | Información | Sí |
| MSTEST0048 | Uso de propiedades TestContext. | Advertencia | No |
| MSTEST0049 | Flow TestContext CancellationToken. | Información | Sí |
| MSTEST0050 | El dispositivo de prueba global debe ser válido. | Advertencia | Sí |
| MSTEST0051 | Assert.Throws debe contener una sola instrucción. | Información | Sí |
| MSTEST0052 | Evite el DynamicDataSourceType explícito. | Información | Sí |
| MSTEST0053 | Evite los parámetros de formato Assert. | Información | Sí |
| MSTEST0054 | Utilice la propiedad CancellationToken. | Información | Sí |
| MSTEST0055 | No omita el valor devuelto del método de cadena. | Advertencia | No |
| MSTEST0056 | TestMethodAttribute debe establecer DisplayName correctamente. | Información | Sí |
| 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 | Sí |
| MSTEST0061 | Use el atributo OSCondition en lugar de la comprobación en tiempo de ejecución. | Información | Sí |
| MSTEST0062 | Evite los parámetros de método de prueba de tipo out/ref. | Advertencia | Sí |
| 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:
- MSTEST0008: Validación de TestInitialize.
- MSTEST0009: Validación de TestCleanup.
- MSTEST0010: Validación de ClassInitialize.
- MSTEST0011: Validación ClassCleanup.
- MSTEST0012: Validación de AssemblyInitialize.
- MSTEST0013: Validación de limpieza de ensamblado.
- MSTEST0034: Establezca ClassCleanupBehavior.EndOfClass.
- MSTEST0050: validación global de configuración de prueba.
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.