2009-07-23 12 views
3

J'apprends à utiliser la bibliothèque de test Boost pour l'instant, et je n'arrive pas à faire fonctionner correctement les suites de tests. Dans le code suivant, 'test_case_1' échoue correctement, mais il est signalé dans la suite de tests principale au lieu de 'test_suite_1'.Echec du test de l'unité Boost détecté dans la suite de tests incorrecte

Quelqu'un sait ce que je fais mal?

#define BOOST_AUTO_TEST_MAIN 
#include <boost/test/auto_unit_test.hpp> 

BOOST_AUTO_TEST_SUITE(test_suite_1); 

BOOST_AUTO_TEST_CASE(test_case_1) { 
    BOOST_REQUIRE_EQUAL(1, 2); 
} 

BOOST_AUTO_TEST_SUITE_END(); 

modifier:

Ovanes de réponse m'a amené à comprendre la hiérarchie suite mieux - dans ce test_suite_1 cas est une sous-suite de la suite de la racine qui, par défaut est nommé Master Test Suite. La journalisation par défaut affiche uniquement la suite racine, ce qui n'est pas ce que j'attendais de pouvoir gérer :)

Vous pouvez définir le nom de la suite racine en définissant BOOST_TEST_MODULE - donc une version alternative de l'exemple ci-dessus qui donne le message d'erreur attendu est:

#define BOOST_TEST_MODULE test_suite_1 
#define BOOST_AUTO_TEST_MAIN 

#include <boost/test/auto_unit_test.hpp> 

BOOST_AUTO_TEST_CASE(test_case_1) { 
    BOOST_REQUIRE_EQUAL(1, 2); 
} 
+0

Je suis content d'avoir trouvé, mais je suis tout à fait gob-frappai à ce comportement . Puisque vous ne pouvez utiliser 'BOOST_TEST_MODULE' qu'une fois, cela ne signifie-t-il pas qu'il y a essentiellement une suite par test d'unité exécutable? Et que tous les échecs de test seront signalés en tant que membres de cette suite, sans aucun nom de sous-suite? Il me manque sûrement quelque chose ici. Modifier: formatage –

Répondre

2

Cela dépend de la façon dont vous configurez votre consignateur pour produire le rapport. Passant par exemple à votre exemple --log_level = tout se traduira par la sortie suivante:

Running 1 test case... 
Entering test suite "Master Test Suite" 
Entering test suite "test_suite_1" 
Entering test case "test_case_1" 
d:/projects/cpp/test/main.cpp(9): fatal error in "test_case_1": critical check 1 == 2 failed [1 != 2] 
Leaving test case "test_case_1" 
Leaving test suite "test_suite_1" 
Leaving test suite "Master Test Suite" 

*** 1 failure detected in test suite "Master Test Suite" 

Voici le lien vers les options de ligne de commande de configuration de Boost Test Framework.

Cordialement,
Ovanes

0

, une fois que vous définissez BOOST_TEST_MODULE, vous n'avez pas besoin de définir BOOST_AUTO_TEST_MAIN

Questions connexes