2010-08-15 2 views

Répondre

2

Je n'ai pas essayé cela moi-même, mais en théorie vous voudriez mettre un point d'arrêt quelque part dans le check_impl function (dans la source boost_unit_test_library), probablement dans les cas non-PASS de son instruction case finale.

En pratique, je me retrouve toujours à recommencer les tests (ou le test de problème spécifique, sélectionné avec --run_test = ...) avec un point d'arrêt sur la vérification incriminée.

Notez qu'un défaut BOOST_REQUIRE résultats dans un jet, donc si vous activez rupture sur C « VS ++ - exceptions dans les options de débogage qui ne marchera pas sur les bien (mais pas BOOST_CHECK s, qui reviennent juste et continuez).

+0

Merci. J'ai également trouvé utile de suivre la procédure décrite dans le chapitre "Microsoft Visual Studio .NET spécifique aux utilisateurs" de la documentation de Boost.Test. Il permet de définir manuellement un point d'arrêt à l'endroit où une vérification échoue. –

1

J'ai mis des points d'arrêt dans check_impl(), comme suggéré par @timday.

Voici un extrait de Boost 1.57.0, fichier boost/test/impl/test_tool.ipp, lignes 355-373:

switch(tl) { 
case PASS: 
    framework::assertion_result(true); 
    return true; 

case WARN: 
    return false; // ADD BREAKPOINT HERE 

case CHECK: 
    framework::assertion_result(false); 
    return false; // ADD BREAKPOINT HERE 

case REQUIRE: 
    framework::assertion_result(false); 

    framework::test_unit_aborted(framework::current_test_case()); 

    throw execution_aborted(); // ADD BREAKPOINT HERE 
} 
+0

Cela ne semble pas fonctionner en boost 1.63. La déclaration d'erreurs dans test_tool.ipp semble se produire dans un thread séparé, ou en quelque sorte à la fin, lorsque tous les tests ont déjà été vérifiés. Je voudrais arrêter quand l'assertion se produit à la place. – CygnusX1

0

assertion.hpp

classe modèle binary_expr:

assertion_result   evaluate(bool no_message = false) const 
    { 
     assertion_result const expr_res(value()); 
     if(no_message || expr_res) 
      return expr_res; <<<<<<<< SUCCESS 

BRK  wrap_stringstream buff; 
     report(buff.stream()); 

     return tt_detail::format_assertion_result(buff.stream().str(), expr_res.message()); 
    }