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 | Valor |
|---|---|
| Identificador de la regla | MSTEST0038 |
| Título | No utilice 'Assert.AreSame' ni 'Assert.AreNotSame' con tipos de valores |
| Categoría | Uso |
| La corrección es problemática o no problemática | Poco problemático |
| Habilitado por defecto | Sí |
| Gravedad predeterminada | Advertencia |
| Introducido en la versión | 3.8.0 |
| Hay una corrección de código | Sí |
Causa
El uso de Assert.AreSame o Assert.AreNotSame cuando uno o ambos argumentos son un tipo de valor.
Descripción de la regla
Assert.AreSame y Assert.AreNotSame funcionan comparando la referencia de los argumentos expected/notExpected indicados y los reales a través de ReferenceEquals. Por lo tanto, cuando se pasa un tipo de valor, se almacena con boxing.
Si usa AreSame, la aserción siempre fallará. Si usa AreNotSame, la aserción siempre será correcta.
Para AreSame, el único caso en que la aserción se cumple es si ambos argumentos son tipos de valor anulables cuyos valores son ambos nulos. En este caso, es más claro tener dos llamadas Assert.IsNull separadas.
Cómo corregir infracciones
Use Assert.AreEqual y Assert.AreNotEqual en lugar de Assert.AreSame y Assert.AreNotSame.
Si se utiliza Assert.AreSame y ambos argumentos son tipos de valor que aceptan valores NULL y se espera que sean nulos, podría ser mejor realizar dos llamadas Assert.IsNull independientes en lugar de usar AreEqual, dependiendo de la intención de la prueba.
Cuándo suprimir las advertencias
No suprima las advertencias de esta regla. Si se omite esta regla, se producirá una aserción que siempre fallará o siempre será aprobada.