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

Autres éditeurs Discussion :

Protocole du CppUnit-test sur un browser (xsl)


Sujet :

Autres éditeurs

  1. #1
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 112
    Par défaut Protocole du CppUnit-test sur un browser (xsl)
    Salut, cher developpeurs!
    Je viens à vous, question d'aide s'agissant la representation d'un CppUnit-test sur un browser, l'ayant transformer avec le langage xsl.

    En fait, j'ai pu generer un rapport en XML et directement utiliser le le fichier un fichier XSL pour le transformer et l'ouvrir sous forme de HTML.
    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
     
       ofstream outputFile("BasemathTest.xml");   
     
       #pragma omp parallel num_threads(numThreads)
       {
         ....
         ....
         ....
          // Specify XML output and inform the test runner of this format.
          CppUnit::XmlOutputter *outputter =
             new CppUnit::XmlOutputter(&runner.result(), outputFile);
     
          // Transform the xml-file 
          outputter->setStyleSheet("CppUnitFormatter.xsl");
    Voici une partie du fichier XML généré:
    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
     
    <?xml version="1.0" encoding='ISO-8859-1' standalone='yes' ?>
    <?xml-stylesheet type="text/xsl" href="CppUnitFormatter_test.xsl"?>
    <TestRun>
      <FailedTests></FailedTests>
      <SuccessfulTests>
        <Test id="1">
          <Name>AffineMap3Test::AffineMap3_test1</Name>
        </Test>
        <Test id="2">
          <Name>AffineMap3Test::AffineMap3_test2</Name>
        </Test>
        <Test id="3">
          <Name>AffineMap3Test::AffineMap3_test3</Name>
        </Test>
        <Test id="4">
          <Name>AffineMap3Test::apply_test</Name>
        </Test>
      </SuccessfulTests>
      <Statistics>
        <Tests>9</Tests>
        <FailuresTotal>0</FailuresTotal>
        <Errors>0</Errors>
        <Failures>0</Failures>
      </Statistics>
    </TestRun>
    A noter que j'ai dejà un fichier XSL (CppUnitFormater.xsl) avec lequel je transforme le fichier BasemathTest.xml.

    Mon probleme, j'aimerais que les protocole du CppUnit soit les même (à l'aide d'un code utilisant probablement la classe XmlOutputterHook pour ajouter d'autres informations sur le protocole) que les protocoles du NUnit-test donc voici un exemple:
    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
    82
     
    <?xml version="1.0" encoding="utf-8" standalone="no"?>
    <?xml-stylesheet type='text/xsl' href='NUnitFormatter.xsl'?>
    <!--This file represents the results of running a test suite-->
    <test-results name="API\Fransoft.DAO.Interface.Tests.dll" total="5" failures="3" not-run="0" date="2009-01-23" time="14:35:28">
      <environment nunit-version="2.4.3.0" clr-version="2.0.50727.3053" os-version="Microsoft Windows NT 5.1.2600 Service Pack 3" 
       platform="Win32NT" cwd="d:\usr3\hiDAO3_1403_1\install\exe_release" machine-name="ENTW077M" user="Grunwald" user-domain="INT" />
      <culture-info current-culture="de-DE" current-uiculture="de-DE" />
      <test-suite name="API\Fransoft.DAO.Interface.Tests.dll" success="False" time="5.391" asserts="0">
        <results>
          <test-suite name="Fransoft" success="False" time="5.391" asserts="0">
            <results>
              <test-suite name="DAO" success="False" time="5.391" asserts="0">
                <results>
                  <test-suite name="Interface" success="False" time="5.391" asserts="0">
                    <results>
                      <test-suite name="Tests" success="False" time="5.391" asserts="0">
                        <results>
                          <test-suite name="InputFilePath" success="True" time="0.000" asserts="0">
                            <results />
                          </test-suite>
                          <test-suite name="PointTriplePartPlacingTests" description="Unit tests for class PointTriplePartPlacing" 
                           success="False" time="5.391" asserts="0">
                            <results>
                              <test-case name="Fransoft.DAO.Interface.Tests.PointTriplePartPlacingTests.TestDestinationFailPlacing" 
                               executed="True" success="True" time="0.969" asserts="0" />
                              <test-case name="Fransoft.DAO.Interface.Tests.PointTriplePartPlacingTests.TestDestinationMissingPlacing" 
                               executed="True" success="True" time="1.344" asserts="0" />
                              <test-case name="Fransoft.DAO.Interface.Tests.PointTriplePartPlacingTests.TestLinearPlacing" executed="True" 
                               success="False" time="1.063" asserts="0">
                                <failure>
                                  <message>
    				<![CDATA[System.ArgumentException : Axis vectors must be orthogonal!]]>
    			      </message>
                                  <stack-trace>
                                    <![CDATA[   bei Fransoft.DAO.Data.CoordinateSystem.Create(Point3D anOrigin, NormVector3D aXAxis, NormVector3D aYAxis) 
                                     in d:\usr3\hiDAO3_1403_1\Source\Projekte\API\Fransoft.DAO.Data\CoordinateSystem.cs:Zeile 250.
      				 bei Fransoft.DAO.Data.CoordinateSystem..ctor(Point3D anOrigin, NormVector3D aXAxis, NormVector3D aYAxis) 
    				 in d:\usr3\hiDAO3_1403_1\Source\Projekte\API\Fransoft.DAO.Data\CoordinateSystem.cs:Zeile 63.
       				 bei HiDAO.Interface.PointTriplePartPlacingStrategyImpl.SetDestination(Part aPart, String aFirst, String aSecond, 
    				 String aThird) in d:\usr3\hiDAO3_1403_1\source\projekte\api\hiDAO.interface\pointtriplepartplacingstrategy.cpp:Zeile 85.
      				 bei Fransoft.DAO.Interface.Tests.PointTriplePartPlacingTests.TestLinearPlacing() in 
    				d:\usr3\hiDAO3_1403_1\Source\Projekte\API\Fransoft.DAO.Interface\Fransoft.DAO.Interface.Tests\PointTriplePlacingTests.cs:Zeile 69.
    				]]>
    			      </stack-trace>
                              </failure>
                            </test-case>
                            <test-case name="Fransoft.DAO.Interface.Tests.PointTriplePartPlacingTests.TestRotatePlacing" executed="True" 
    			 success="False" time="1.000" asserts="0">
                                <failure>
                                  <message>
    				<![CDATA[System.ArgumentException : Axis vectors must be orthogonal!]]>
    			      </message>
                                  <stack-trace>
     			      </stack-trace>
                                </failure>
                            </test-case>
                            <test-case name="Fransoft.DAO.Interface.Tests.PointTriplePartPlacingTests.TestSourceMissingPlacing" executed="True" 
    			 success="False" time="1.000" asserts="0">
                                <failure>
                                  <message><![CDATA[An unexpected exception type was thrown Expected: Fransoft.BaseTypes.InvalidValueException
     					but was: System.ArgumentException]]>
    			      </message>
     
                                </failure>
                            </test-case>
                          </results>
                        </test-suite>
                        <test-suite name="Util" success="True" time="0.000" asserts="0">
                          <results />
                        </test-suite>
                      </results>
                    </test-suite>
                  </results>
                </test-suite>
              </results>
            </test-suite>
          </results>
        </test-suite>
        </results>
      </test-suite>
    </test-results>
    Le fichier transformant le protocole ci-dessus est le NUnitFormater.xsl suivant:
    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
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
     
    <?xml version="1.0" encoding="iso-8859-1"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
     
    <xsl:template match="/">
         <xsl:apply-templates/>
    </xsl:template>
     
    <xsl:template match="test-results">
    	<html>
    	<head>
    	<script language="javascript">
    	  function toggleDiv(divid)
    	  {
    	    if(document.getElementById(divid).style.display == 'none')
    		{
    	      document.getElementById(divid).style.display = 'block';
    	    }
    		else
    		{
    	      document.getElementById(divid).style.display = 'none';
    	    }
    	  }
    	</script>
    	</head>
    	<body>	
    	<h1 name="top">Unittests 
    		<em>
    			<xsl:value-of select="@name"/>
    		</em>, 
    		generated <xsl:value-of select="@date"/>, 
    		<xsl:value-of select="@time"/> 
    	</h1>
    	<p>
    		<b>Found <xsl:value-of select="@total"/> tests, <xsl:value-of select="@failures"/> failures, 
    		<xsl:value-of select="@not-run"/> tests ignored</b>
    	</p>		
     
    	<xsl:for-each select="environment">
    		<xsl:call-template name="EnvironTempl"/>
    	</xsl:for-each>
     
    	<xsl:for-each select="test-suite">
    		<xsl:call-template name="TestSuiteTempl"/>		
    	</xsl:for-each>
     
    	</body>
    	</html>
    </xsl:template>
     
    <xsl:template name="EnvironTempl">
    	<div style="font-size:8pt;">
    		NUnit <xsl:value-of select="@nunit-version"/> on CLR version 
    		<xsl:value-of select="@clr-version"/> running on <xsl:value-of select="@os-version"/>
    	</div>	  
    </xsl:template>
     
    <xsl:template name="TestSuiteTempl">
    	<h2> Testsuite <xsl:value-of select="@name"/>, </h2>
    	<p>Success: <xsl:value-of select="@success"/>, took <xsl:value-of select="@time"/> seconds to run, <xsl:value-of select="@asserts"/> assertions tested.</p>
    	<xsl:for-each select="results">
    		<xsl:for-each select="test-suite">	
    			<xsl:for-each select="results">
    				<xsl:for-each select="test-suite">
    					<xsl:call-template name="TestFixtureTempl"/>		
    				</xsl:for-each>
    			</xsl:for-each>
    		</xsl:for-each> 
    	</xsl:for-each>
    </xsl:template>
     
    <xsl:template name="TestFixtureTempl">
    	<xsl:variable name="name" select="@name"/>
    	<xsl:variable name="call" select="concat('toggleDiv(&quot;',$name,'&quot;);')"/>
    	<xsl:choose>
    		<xsl:when test="@time='0.000'">			
    			<div align="block" style="width:100%">
    				<a href="javascript:;" onmousedown="{$call}">[-+]</a><![CDATA[...]]>
    				<span style="font-size:125%;font-weight:bold">Test fixture <xsl:value-of select="@name"/> (IGNORED!)</span>
    				<![CDATA[...]]><a href="#top">[To top]</a>
    			</div>
    		</xsl:when>
    		<xsl:otherwise>
    			<div align="block" style="width:100%">
    				<a href="javascript:;" onmousedown="{$call}">[-+]</a><![CDATA[...]]>
    				<span style="font-size:125%;font-weight:bold">Test fixture <xsl:value-of select="@name"/> (<xsl:value-of select="@description"/>) [<xsl:value-of select="@time"/> secs]</span>
    				<![CDATA[...]]><a href="#top">[To top]</a>
    			</div>
    		</xsl:otherwise>
    	</xsl:choose>
    	<xsl:choose>
    		<xsl:when test="@success='False'">
    			<xsl:variable name="visible" select="'margin-left:30px;display:block'"/>
    			<div style="{$visible}" id="{$name}">
    				<xsl:for-each select="results">
    					<xsl:for-each select="test-case">
    						<xsl:call-template name="TestCaseTempl" />
    					</xsl:for-each>
    					<xsl:for-each select="test-suite">
    					<xsl:call-template name="TestFixtureTempl"/>
    					</xsl:for-each>
    				</xsl:for-each>
    			</div>
    		</xsl:when>
    		<xsl:otherwise>
    			<xsl:variable name="visible" select="'margin-left:30px;display:none'"/>
    			<div style="{$visible}" id="{$name}">
    				<xsl:for-each select="results">
    					<xsl:for-each select="test-case">
    						<xsl:call-template name="TestCaseTempl" />
    					</xsl:for-each>
    			        <xsl:for-each select="test-suite">
    			            <xsl:call-template name="TestFixtureTempl"/>
    			        </xsl:for-each>
    				</xsl:for-each>
    			</div>
    		</xsl:otherwise>
    	</xsl:choose>
    </xsl:template>
     
    <xsl:template name="TestCaseTempl">	
    	<div style="margin-left:10;display:block">
    	<p>
    	<table border="1" width="80%" style="border-width:1;border-style:solid;border-color:black;text-align:center">
    	<tr><td colspan="4"><b>Test case <xsl:value-of select="@name"/></b></td></tr>
    	<xsl:choose>
    		<xsl:when test="@executed='False'">			
    			<xsl:variable name="tableCellColor" select="'background-color:yellow'"/>										
    			<tr style="{$tableCellColor}">
    				<td>Time</td>
    				<td>Assertions</td>
    			</tr>
    			<tr style="{$tableCellColor}">
    				<td></td>
    				<td></td>
    			</tr>						
    		</xsl:when>
    		<xsl:when test="@success='False'">
    			<xsl:variable name="tableCellColor" select="'background-color:red'"/>	
    				<tr style="{$tableCellColor}">
    					<td>Time</td>
    					<td><xsl:value-of select="@time"/></td>
    					<td>Assertions</td>
    					<td><xsl:value-of select="@asserts"/></td>
    				</tr>
    		</xsl:when>
    		<xsl:when test = "@success='True'">
    			<xsl:variable name="tableCellColor" select="'background-color:lightgreen'"/>				
    				<tr style="{$tableCellColor}">
    					<td>Time</td>
    					<td><xsl:value-of select="@time"/></td>
    					<td>Assertions</td>
    					<td><xsl:value-of select="@asserts"/></td>
    				</tr>
    		</xsl:when>
    	</xsl:choose>
    		<xsl:for-each select="failure">
    				<tr><td colspan="4"><xsl:value-of select="."/></td></tr>
    		</xsl:for-each>
    		<xsl:for-each select="reason">
    				<tr><td colspan="4"><xsl:value-of select="."/></td></tr>
    		</xsl:for-each>	
    	</table>
    	</p>	
    	<!--<xsl:choose>
    		<xsl:when test="@success='True'">			
    			</div>
    		</xsl:when>
    		<xsl:otherwise>
    			</div>
    		</xsl:otherwise>
    	</xsl:choose>-->
    	</div>		
    </xsl:template>
     
    </xsl:stylesheet>
    Priere de tester et de voir l'effet que ca fait. Je suis completement perdu à ce niveau et je ne sais pas par ou commencer pour que le protocole plus-haut ressemble á celui plus bas.
    Comment puis-je m'en prendre?? Quelqu'un a-t-il une idée qui puisse m'aider?

    Merci d'avance

    Merlin

  2. #2
    Membre Expert

    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
    Par défaut
    Salut,

    Le plus simple serait peut-être d'écrire un XSL pour transformer le format de CppUnit en format de NUnit ?

    MAT.

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

    Le plus simple serait peut-être d'écrire un XSL pour transformer le format de CppUnit en format de NUnit ?

    MAT.
    Salut, Mat!
    Ce serait simple en faisant comme tu dis. J'ai eu cette idée d'utiliser directement la transformation xsl du NUnit en y effectuant certains changements. Supposons que le protocole CppUnit est comme je l'ai envoyé et que l'on veuille utiliser le fichier xsl du NUnit (voir aussi mon dernier post) pout le representer, où et comment (dans le fichier xsl du NUnit) ferait-on le changement?

    Merci pour ton aide

    Merlin

Discussions similaires

  1. [XSLT] <xsl:if> test sur plusieurs condition
    Par oxilab dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 30/06/2006, 20h30
  2. [XSL] Test sur un xsl-if qui semble ignoré
    Par Shadow aok dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 18/04/2006, 18h23
  3. [XSL] Test sur le nom d'une balise
    Par KibitO dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 18/12/2005, 13h44
  4. [XSL][XHTML] test sur position de noeuds (text() et autres)
    Par luta dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 05/09/2005, 17h47
  5. xsl : test sur les chaine de caractère
    Par yos dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 13/07/2005, 15h43

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