Quel est le point de l'assertion REQUIRE_NOTHROW
? Si je mets juste une déclaration et ne l'enveloppe pas dans une macro d'assertion, elle échouera si elle se lance de toute façon?Point de REQUIRE_NOTHROW dans le cadre de test catch C++
0
A
Répondre
2
C'est la différence entre l'échec de TEST_CASE et l'échec d'une assertion individuelle. Les macros REQUIRE garantissent que les lignes suivantes ne sont pas exécutées en cas d'échec. Inversement, les macros CHECK peuvent marquer le cas de test comme un échec mais continuer.
Considérons cet exemple:
REQUIRE_NOTHROW(parseInput(validInput));
REQUIRE_THROWS(parseInput(errorInput));
REQUIRE_THROWS(parseInput(NULL));
Donc nous demandons explicitement que le passage d'entrée valide ne provoque pas une exception, mais une mauvaise entrée ne. Si nous n'utilisions pas la macro REQUIRE_NOTHROW()
, le test échouerait, mais nous devrons alors déchiffrer l'endroit où il a échoué - une exception pourrait provenir d'autres lignes de code de test.