IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques C++ Discussion :

CppUnit et generation de rapport en format XML


Sujet :

Bibliothèques C++

  1. #1
    Membre du Club
    Inscrit en
    Mai 2008
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 112
    Points : 44
    Points
    44
    Par défaut CppUnit et generation de rapport en format XML
    Salut!
    Je suis en train de developper des tests unitaires avec cppUnit. Pour celà je veux generer les rapport en format XML (et si possible ecrire mes propres commentaire). Je ne sais pas comment faire!

    Voici en fait un main programme d'un test que j'ai fait jusqu'ici. Comment dois-je faire en sorte que je recoive un rapport en fichier XML? Quelqu'in a-t-il dejà été confronté à celà? J'ai besoin de votre aide.

    Merci d'avance

    Merlin

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    #include <CommonIncludes/BeginPragma.h>
     
    // Für den TG-Viewer
    //#define _TGVIEWER
     
    #ifdef _TGVIEWER
    #pragma comment(lib,"..\\..\\..\\..\\..\\..\\..\\Install\\exe_debug\\_HiPlugin_TGViewer")
    #include <TopGeomProjects\TGViewer\_HiPlugin_TGViewer\TGViewerWindow.h>
    #endif
     
    // Includes
    #include <DebugUtilities/LogingGuard.h>
    #include <DebugUtilities/LogManager.h>
    #include <DebugUtilities/CrtWarningHooks.h>
     
    // External Includes
    #include <CommonIncludes/BeginExternal.h>
    #include <cppunit/include/cppunit/extensions/TestFactoryRegistry.h>
    #include <cppunit/include/cppunit/CompilerOutputter.h>
    #include <cppunit/include/cppunit/ui/text/TestRunner.h>
     
    #include <omp.h>
    #include <CommonIncludes/EndExternal.h>
     
    #pragma region Contents
     
    int __cdecl main()
    {
     
       #ifdef _TGVIEWER
          // Für den TG-Viewer
          add_plot_output_device(std::auto_ptr<utl::PlotOutputDevice>(new TGViewer::TGViewerWindow()));
       #endif
     
       _CrtSetReportHook(&utl::Crt2WarnOrError);
       _set_invalid_parameter_handler(&utl::CrtInvalidParameterHandler2Error);
     
       utl::enable_loging();
       utl::LogingGuard tester("FeatureDataBaseTest", "ErrorCounter");
       int errorCountStart = tester.get_error_counter();
     
       const int numThreads = 1;
       bool success[numThreads];
     
    #pragma omp parallel num_threads(numThreads)
       {
          // Get the top level suite from the registry
          CppUnit::Test *suite = CppUnit::TestFactoryRegistry::getRegistry().makeTest();
     
          // Adds the test to the list of test to run
          CppUnit::TextUi::TestRunner runner;
          runner.addTest(suite);
     
          // Change the default outputter to a compiler error format outputter
          runner.setOutputter(new CppUnit::CompilerOutputter(&runner.result(),std::cerr));
     
          // Run the tests.
          success[omp_get_thread_num()] = runner.run();
       }
     
       // Return error code 1 if one of the test failed.
       for (int i = 0; i < numThreads; ++i)
       {
          if (!success[i])
             return 1;
       }
     
     
       int errorCountEnd = tester.get_error_counter();
       tester.positively_finished();
       if (errorCountEnd != errorCountStart)
       {
          std::cout << __FILE__ << "(" << __LINE__ << ") : FEHLER (" << errorCountEnd - errorCountStart << " ERROR_DIRECTs)" << std::endl;
          return 1;
       }
       return 0;
    }
     
    #pragma endregion
     
    #include <CommonIncludes/EndPragma.h>

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Points : 1 543
    Points
    1 543
    Par défaut
    Salut,

    En cherchant "cppunit xml" sur google la première entrée contient 26.9.2.4. Configure CPPUnit to generate XML qui semble répondre à ta question.

    En même temps j'utilise Boost.Test et je suis donc incapable de juger de la pertinence de ce qui y est expliqué...

    MAT.

  3. #3
    Membre du Club
    Inscrit en
    Mai 2008
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 112
    Points : 44
    Points
    44
    Par défaut
    Citation Envoyé par Mat007 Voir le message
    Salut,

    En cherchant "cppunit xml" sur google la première entrée contient 26.9.2.4. Configure CPPUnit to generate XML qui semble répondre à ta question.

    En même temps j'utilise Boost.Test et je suis donc incapable de juger de la pertinence de ce qui y est expliqué...

    MAT.
    Merci tout d'abord pour ta reaction, Mat007!
    Le lien m'a servi pour un protocol en fichier xml, cependant j'ai un bug:

    Comment pouvoir transformer le ficheíer xml en fichier xsl? L'ayant transformé peut-on directement l'ouvrir et vir le rapport en xsl?

    En fait, j'ai essayé et je ne parviens pas a ouvrir le fichier xml.

    Voici le code utilisé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    int __cdecl main()
    {
     
       #ifdef _TGVIEWER
          // Für den TG-Viewer
          add_plot_output_device(std::auto_ptr<utl::PlotOutputDevice>(new TGViewer::TGViewerWindow()));
       #endif
     
          _CrtSetReportHook(&utl::Crt2WarnOrError);
          _set_invalid_parameter_handler(&utl::CrtInvalidParameterHandler2Error);
     
       utl::enable_loging();
       utl::LogingGuard tester("BaseMathTest", "ErrorCounter");
       int errorCountStart = tester.get_error_counter();
     
       const int numThreads = 1;
       bool success[numThreads];
     
       // Define the file that will store the XML output.
       ofstream outputFile("BasemathTest.xml");   
     
       #pragma omp parallel num_threads(numThreads)
       {
          // Get the top level suite from the registry
          CppUnit::Test *suite = CppUnit::TestFactoryRegistry::getRegistry().makeTest();
     
          // Adds the test to the list of test to run
          CppUnit::TextUi::TestRunner runner;
          runner.addTest(suite);
     
          // Specify XML output and inform the test runner of this format.
          CppUnit::XmlOutputter* outputter =
             new CppUnit::XmlOutputter(&runner.result(), outputFile);
     
          outputter->setStyleSheet("report.xsl");
          runner.setOutputter(outputter);
     
          // Run the tests.
          success[omp_get_thread_num()] = runner.run();
       }
     
       // Return error code 1 if one of the test failed.
       for (int i = 0; i < numThreads; ++i)
       {
           if (!success[i])
              return 1;
       }
     
       int errorCountEnd = tester.get_error_counter();
       tester.positively_finished();
       if (errorCountEnd != errorCountStart)
       {
          std::cout << __FILE__ << "(" << __LINE__ << ") : ERROR (" << errorCountEnd - errorCountStart << " ERROR_DIRECTs)" << std::endl;
          return 1;
       }
     
       return 0;
    }
    #pragma endregion
    #include <CommonIncludes/EndPragma.h>
    Le programme se compile. Mais lorsque je veux ouvrir le fichier xml generé,
    je lis sur le browser que "les données xml ne peuvent s'afficher tant que xsl est utilisé".
    Lorsque je commente la ligne correspondante (outputter->setStyleSheet("report.xsl") et je recompile le programme, alors je peux voir les données xml.
    Comment est ce que je peux afficher les données xsl, puisque c'est ce fichier que j'aimerais voir ( la manière de l'affichage me plait ).

    Quelqu'un peut-il m'aider?

  4. #4
    Membre du Club
    Inscrit en
    Mai 2008
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 112
    Points : 44
    Points
    44
    Par défaut
    Citation Envoyé par Mat007 Voir le message
    Salut,

    En cherchant "cppunit xml" sur google la première entrée contient 26.9.2.4. Configure CPPUnit to generate XML qui semble répondre à ta question.

    En même temps j'utilise Boost.Test et je suis donc incapable de juger de la pertinence de ce qui y est expliqué...

    MAT.
    Re-Salut!
    Voici en fait ce que ( en attaché) j'aimerais obtenir à la fin.

    Merci d'avance pour votre aide

  5. #5
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Points : 1 543
    Points
    1 543
    Par défaut
    Le fichier XSL décrit une transformation du fichier XML vers autre chose, en l'occurrence pour ce qui t'intéresse vers apparemment du HTML.
    Si le navigateur trouve au début du fichier XML une indication comme quoi il doit utiliser un certain XSL il va essayer de transformer le XML tout seul.

    Bref, lorsque tu laisses le setStyleSheet à quoi ressemblent les premières lignes du fichier XML généré ?
    Est-ce que lorsque tu ouvres ce fichier XML avec ton navigateur tu as bien le fichier XSL dans le même répertoire comme tu l'indiques dans ton appel à setStyleSheet ?

    MAT.

  6. #6
    Membre du Club
    Inscrit en
    Mai 2008
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 112
    Points : 44
    Points
    44
    Par défaut
    Citation Envoyé par Mat007 Voir le message
    Le fichier XSL décrit une transformation du fichier XML vers autre chose, en l'occurrence pour ce qui t'intéresse vers apparemment du HTML.
    Si le navigateur trouve au début du fichier XML une indication comme quoi il doit utiliser un certain XSL il va essayer de transformer le XML tout seul.

    Bref, lorsque tu laisses le setStyleSheet à quoi ressemblent les premières lignes du fichier XML généré ?
    Est-ce que lorsque tu ouvres ce fichier XML avec ton navigateur tu as bien le fichier XSL dans le même répertoire comme tu l'indiques dans ton appel à setStyleSheet ?

    MAT.
    Salut, Mat007!
    Je pense avoir compris le problem, même comme je n'ai pas encore resolu.
    Comme je l'ai dit hier, le programme me genère un fichier xml dejà. Le probleme est sa representation (transformation) sur le browser. Donc il me faut ecrire un programm en xsl qui puisse transformer le fichier xml et le representer comme tu l'a vu sur le fichier attacher (cf. mon message d'hier).
    Je te dirai ce que j'ai obtenu. Il faudra auparavant que j'aquierts des connaissance en langage xsl avant de resoudre le probleme comme je me suis imaginer.
    Je me pose aussi la question de savoir si le cheminement est bon. Qu'est ce que t'en pense?

    Bonne journée

    Merlinerick

  7. #7
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Points : 1 543
    Points
    1 543
    Par défaut
    Cherche 'cppunit xsl' sur google, y'a sûrement plein d'exemples de disponibles...

    MAT.

Discussions similaires

  1. [9i] Export de rapport sous format XML
    Par Kazadsak dans le forum Forms
    Réponses: 1
    Dernier message: 15/11/2013, 08h36
  2. conversion rapport Webi au format xml
    Par tsana dans le forum Webi
    Réponses: 1
    Dernier message: 17/01/2013, 15h54
  3. CppUnit et la generation de rapport au format text
    Par xxiemeciel dans le forum Bibliothèques
    Réponses: 3
    Dernier message: 03/10/2005, 22h08
  4. Format XML
    Par John Fullspeed dans le forum API, COM et SDKs
    Réponses: 5
    Dernier message: 01/10/2004, 14h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo