Assert.Equals
, al igual que su método de clase basado en Object.Equals
, es perfectamente útil para comparar objetos. Sin embargo, ninguno de los métodos es útil para la detección e informe autónomo o errores en la prueba unitaria, ya que Object.Equals
devuelve un valor booleano en lugar de arrojar si los valores no son iguales. Este es un problema si se utiliza como esto en una prueba de unidad:
Assert.Equals(42, ComputeMeaningOfLife());
Aparte del problema de esta unidad de prueba, posiblemente, correr demasiado tiempo :-), esta prueba podría tener éxito en silencio, incluso si el método Compute proporciona un resultado erróneo . El método correcto para usar es Assert.AreEqual
, que no devuelve nada, pero arroja una excepción si los parámetros no son iguales.
Se agregó Assert.Equals
, por lo que el código como en el ejemplo anterior no vuelve a Object.Equals
y neutraliza silenciosamente la prueba unitaria. En cambio, cuando se llama desde una prueba unitaria, Assert.Equals
siempre arroja una excepción que le recuerda que no debe usarla.
Tenga en cuenta que '' CollectionAssert'' tiene el mismo inconveniente de exponer''Object.Equals''. A diferencia de '' Assert'', '' CollectionAssert'' no redefine el método por lo que no se obtiene una falla de prueba útil cuando se ejecuta la prueba que se obtiene al ejecutar una prueba que contiene '' Assert.Equals''. – vvnurmi