Questi tre metodi hanno tre diversi obiettivi specifici. L'obiettivo del test è di fornire una chiara verifica e convalida del codice. Utilizzando il metodo più chiaro e specifico possibile, stai rendendo il tuo test il più piccolo possibile, con il significato più specifico e chiaro possibile.
Questo aiuta perché aggiunge chiarezza: è possibile vedere, in particolare, che cosa si suppone fare un test in una natura più dichiarativa, in cui utilizzare lo stesso metodo per più scenari di test, ciascuno con un significato diverso, richiede più comprensione del codice stesso, invece della natura del test.
In questo caso, il terzo è il (solo) un opportuno utilizzare. Tuttavia, se si ha questa situazione, devi utilizzare uno diverso, ad esempio:
Assert.IsTrue(myClass.MethodThatReturnsTrue());
si dovrebbe utilizzare il metodo che fornisce il più chiarezza al vostro obiettivo - se si sta controllando due valori per l'uguaglianza , usa Assert.IsEqual
, se stai controllando un booleano per verificare che sia falso, usa Assert.IsFalse
. Ciò rende le segnalazioni di errore significative e comprensibili.
fonte
2010-02-22 19:43:50
IMO, questa è la risposta migliore/più concisa che ho visto finora. La risposta principale manca che dà un messaggio di errore più informativo. – Catskul
I quadri di asserzione fluenti stanno diventando sempre più popolari proprio perché aumentano la leggibilità. Vedi, ad esempio, gli abbinamenti Hamcrest di JUNit (http://code.google.com/p/hamcrest/wiki/Tutorial) e NUnit's ConstraintModel (http://www.nunit.org/index.php?p=constraintModel&r=2.4 .1). –