2014-07-02 3 views
1

Utilisation du Catch single-include unit-tester, j'ai des tests (en passant) comme celui-ciComment récupérer ou imprimer des tampons de journalisation d'informations «Catch»?

TEST_CASE ("sizes", "[metadata]") { 
    INFO ("The number is " << 42); 
    REQUIRE (sizeof(some_struct) == 16); 
} 

La documentation (lien ci-dessus) indique que le INFO est connecté à un tampon, mais je n'ai pas compris comment sauvegarder ou récupérer autrement le tampon. Le message n'est pas imprimé sur ma console, mais d'autres choses que je printf ou shove dans cout et cerror impriment, donc mon E/S est configuré correctement. J'ai essayé de lire la source pour savoir où les messages sont rangés, mais c'est gros et impliqué. Je me demande si quelqu'un arrive à savoir comment récupérer les messages?

+1

Avez-vous regardé la macro 'INFO' pour voir ce qu'il fait? Peut-être tracer dans un débogueur pour voir où cela mène. –

+0

Ouais, le débogueur 'gdb' ne parvient pas à charger l'exécutable (dit simplement" Format de fichier non reconnu. ") La macro appelle dans les tripes de la pieuvre, dans une variable appelée" Info ", pour laquelle il y a près de 700 correspondances le fichier. Lire la source du bas vers le haut allait prendre beaucoup de temps, et c'est pourquoi j'ai posté la question: pour voir si quelqu'un venait de le savoir. –

+0

Le problème 'gdb' a été tracée à la liaison mixte de C et C++ et éliminé. Mais il semble que les fonctions de capture soient agressivement alignées, donc ma tentative d'entrer dans 'INFO' ne fait rien. Toujours à la recherche de conseils. –

Répondre

1

Cela ressemble à ce comportement: INFO est signalé uniquement en cas d'échec. Voir https://github.com/philsquared/Catch/issues/290

+0

C'est en effet le cas. Si vous voulez imprimer le message indépendamment de l'échec, vous pouvez utiliser WARN. Je sais que ce n'est pas idéal et je l'ai sur ma liste pour ajouter une solution de rechange. – philsquared

Questions connexes