44 votes

Comment attraper une assertion avec le test Google ?

Je programme des tests unitaires avec le framework de test Google. Mais je veux vérifier si certaines assertions sont bien placées et sont utiles. Existe-t-il un moyen d'attraper une assertion dans le test Google ?

Exemple de code en cours de test :

 int factorial(int n){
    assert(n >= 0);
    //....
}

Et puis le test :

 #include <gtest/gtest.h>
TEST(FactorialTest,assertNegative){
    EXPECT_ANY_THROW({
         factorial(-1);
    });
}

Mais EXPECT_ANY_THROW n'attrape pas l'assertion mais seulement les exceptions. Je cherche une solution pour attraper les assertions.

38voto

Steve Jessop Points 166970

Le test Google fournit ASSERT_DEATH , EXPECT_DEATH et d'autres macros associées .

Cette question et Qu'est-ce que Google Test, Death Tests sont les réponses de chacun. Cela en fait-il des doublons ou non ? ;-)

1voto

Michael Points 1184

EXPECT_FATAL_FAILURE (déclaration, texte) et EXPECT_NONFATAL_FAILURE (déclaration, texte) ne passeront que si « déclaration » invoque respectivement un ASSERT_x ou un EXECT_x défaillant.

Ces déclarations passeront dans vos tests :

EXPECT_NONFATAL_FAILURE( EXPECT_TRUE( 0 ), "" ); EXPECT_FATAL_FAILURE( ASSERT_TRUE( 0 ), "" );

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X