2011-11-03 16 views
9

Al probar un método que es de retorno escriba bool.Assert.AreEqual vs Assert.IsTrue/Assert.IsFalse

Si usted tiene:

expected = true; 
Assert.AreEqual(expected, actual); 

o

Assert.IsTrue(actual); 

sé que ambos producen el mismo resultado, pero que es mejor la práctica de usar?

EDIT: Por ejemplo, si hago AreEqual, no es esencialmente el mismo que hacer es verdadera en un método que devuelve una cadena a la continuación:

string expected = “true”; 
String actual = test.testMethod(data) 
Bool test; 

if expected.equals(actual) 
      test = true; 
else 
      test = false; 
Assert.IsTrue(test); 
+1

¿Bajo qué circunstancias tiene una * variable * 'expected' que usted * sabe que es siempre verdadera *? Es decir, si sabes que siempre es cierto, ¿por qué tener una variable en primer lugar? Solo usa el literal "verdadero". –

+0

@EricLippert: Está tratando de ajustarse al patrón que se autogenera VS, que se ve exactamente así (haga clic con el botón derecho en un método de devolución de bool, luego haga clic en Crear pruebas unitarias). – SLaks

Respuesta

13

Usando Assert.IsTrue es más claro y menos detallado.

+0

Y el mensaje es mejor cuando la prueba falló. – Toto

+2

@Toto: ¿Cómo es mejor que 'Assert.IsTrue failed'? – SLaks

+0

acabo de probar. Recuerdo que el mensaje fue diferente, pero no. Lo siento. – Toto

15

Solo debe usar Assert.IsTrue si está probando algo que devuelve directamente un booleano que siempre debe ser verdadero.

No debe dar masajes a los datos para obtener un valor booleano para IsTrue; en su lugar, debe llamar a un método más relevante en Assert o CollectionAssert.

En su ejemplo editado, debe llamar a Assert.AreEqual en su lugar; le dará un mensaje mucho más agradable.

Cuestiones relacionadas