Comment spécifiez-vous qu'une exception devrait être attendue en utilisant Boost.Test?

J'ai un cas de test unitaire Boost qui provoque l'objet testé pour lancer une exception (c'est le test, pour provoquer une exception). Comment puis-je spécifier dans le test pour attendre cette exception particulière.

Je peux spécifier que le test devrait avoir un certain nombre d'échecs en utilisant BOOST_AUTO_TEST_CASE_EXPECTED_FAILURES mais cela semble plutôt non spécifique. Je veux être en mesure de dire à un moment précis du test qu'une exception devrait être levée et qu'elle ne devrait pas être comptée comme échec.

25
demandé sur Piotr Dobrogost 2008-10-06 03:38:29

2 réponses

Ça ne marche pas?

BOOST_CHECK_THROW (expression, an_exception_type);

Cela devrait faire passer le test si l'expression lève le type d'exception donné ou échoue autrement. Si vous avez besoin d'une sévérité différente de 'CHECK', Vous pouvez également utiliser BOOST_WARN_THROW() ou BOOST_REQUIRE_THROW() à la place. Voir la documentation

41
répondu jonner 2008-10-06 02:09:47

Vous pouvez également utiliser BOOST_CHECK_EXCEPTION, qui vous permet de spécifier la fonction de test qui valide votre exception.

11
répondu Tomek 2008-10-06 07:15:58