À l'aide d'AFFIRMER et de s'ATTENDRE à GoogleTest
Tout ASSERT_* macros de provoquer l'interruption de cas de test, EXPECT_* macros de poursuivre son évaluation.
Je voudrais savoir quels sont les critères pour décider de l'utilisation de l'un ou de l'autre.
- ASSERT_* les macros ne pas (nécessairement) de résilier le cas de test, veuillez consulter Martin réponse pour plus de détails.
Vous devez vous connecter pour publier un commentaire.
Utilisation
ASSERT
lorsque la condition doit hold - si ce n'est pas le test s'arrête là. Utilisez cette option lorsque le reste de l'épreuve n'a pas de sens sémantique sans cette condition de détention.Utilisation
EXPECT
lorsque la condition devrait tenir, mais dans les cas où il n'est pas, nous pouvons toujours obtenir la valeur de la poursuite de l'essai. (Le test sera toujours voués à l'échec, à la fin, cependant).La règle de base est: utiliser
EXPECT
par défaut, sauf si vous besoin quelque chose à tenir pour le reste des tests, dans ce cas, vous devez utiliserASSERT
pour cette condition.C'est un écho au sein de la apprêt:
Utilisation
EXPECT_
lorsque vousUtilisation
ASSERT_
quandDepuis
ASSERT_
abandonne votre fonction immédiatement si elle échoue, possible de nettoyage de code est ignoré.Préférez
EXPECT_
en tant que par défaut.En plus des réponses précédentes...
ASSERT_
ne met pas fin à l'exécution du cas de test. Il retourne quelle qu'en soit la fonction a été utilisée. En plus de ne pas le test de cas, il évalue àreturn;
, et cela signifie qu'il ne peut pas être utilisé dans une fonction retournant quelque chose d'autre quevoid
. Sauf si vous êtes très bien avec l'avertissement du compilateur, ce qui est.EXPECT_
échoue le test mais n'a pasreturn;
, de sorte qu'il peut être utilisé à l'intérieur des fonctions de type de retour.Consulter le lien suivant: Effective C++ Test À L'Aide D'GoogleTest
(diapo 23). Il y a une bonne ligne de conduite et de conseils sur l'utilisation de s'ATTENDRE à vs faire VALOIR.