web-dev-qa-db-fra.com

Comment attraper une affirmation avec le test Google?

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

Exemple de code sous 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 des assertions.

36
Killrazor

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

Cette question et Que sont les tests Google, les tests de décès sont les réponses des uns et des autres. Est-ce que cela en fait des doublons ou non? ;-)

30
Steve Jessop

EXPECT_FATAL_FAILURE (instruction, texte) et EXPECT_NONFATAL_FAILURE (instruction, texte) passera uniquement si 'instruction' appelle un échec ASSERT_x ou EXECT_x respectivement.

Ces déclarations passeront vos tests:

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

0
Michael