Usted es definitivamente correcto. Estaba luchando con un similar problem el día de hoy, hasta que encontré su publicación y ahora estoy seguro de que NUnit IsEqualTo() no llama consistentemente a las anulaciones Iguales provistas.
Digo constantemente, porque a veces lo hace. De hecho, tengo dos clases. El segundo derivado del primero. Cuando llamo a Is.EqualTo() en las instancias de la primera, NUnit llama a las anulaciones Iguales, para las instancias de la segunda no.
Si bien eso es muy peculiar, no tengo tiempo para investigar más sobre lo que está pasando.
Las personas con problemas o soluciones similares definitivamente deberían publicar al respecto, ya que esto es algo muy molesto y realmente me hizo dudar de la validez de mis pruebas.
Mientras tanto, creé la siguiente clase Affirm, que llama a las anulaciones de igual a igual (lo compruebo). Utiliza NUnit para hacer una Assert de igualdad simple en lugar de Is.EqualTo() y de alguna forma remedia el hecho de que, de esta forma, NUnit no da representaciones de cadena de los objetos en caso de que falle la prueba.
así que aquí está:
using NUnit.Framework;
public static class Affirm
{
public static Affirmer That(object actual)
{
return new Affirmer(actual);
}
}
[EditorBrowsable(EditorBrowsableState.Never)]
public class Affirmer
{
readonly object _actual;
public Affirmer(object actual)
{
_actual = actual;
}
public void IsEqualTo(object expected)
{
string failureMessage = string.Format("\nExpected: <{0}>\nBut was: <{1}>", _actual, expected);
Assert.That(_actual.Equals(expected), Is.True, failureMessage);
}
public void IsNotEqualTo(object expected)
{
string failureMessage = string.Format("\nDid not excpect: <{0}>\nBut was: <{1}>", _actual, expected);
Assert.That(_actual.Equals(expected), Is.False, failureMessage);
}
}
utilizar de esta manera:
Affirm.That(actualObject).IsEqualTo(expectedObject);
y
Affirm.That(actualObject).IsNotEqualTo(expectedObject);
Espero que esto ayude.
Tengo exactamente el mismo problema. Por ahora estoy usando Assert.IsTrue (objectA.Equals (objectB)); –
Tengo el mismo problema y he determinado que funciona si los objetos que estoy comparando son * no * la misma referencia. es decir, crea 2 objetos con propiedades diferentes, aparte de las propiedades de comparación de igualdad, entonces Assert.Equals funciona ... Si se compara la misma referencia (que seguramente son iguales) ¡entonces falla! como no es igual (NUnit 2.5) – PandaWood
Usted está buscando 'Assert.AreEqual (objA, objB);' – DanielV