211 votes

Quelle est la spécification du format XML de JUnit prise en charge par Hudson ?

J'ai Hudson comme serveur d'intégration continue et je veux utiliser l'option 'Publish JUnit test result report'. Mais je n'utilise pas les outils xUnit pour les tests, j'ai plutôt des scripts qui exécutent les tests et renvoient les résultats dans un format simple. Je pense faire un scripts qui transforme ces résultats au format JUnit. J'aimerais donc savoir à quoi doit ressembler le fichier JUnit ?

0 votes

Pourquoi ne pas utiliser JUnit ? Ces tests peuvent être automatisés de différentes manières via une variété d'outils cmd, UI, etc...

6 votes

@AaronMcIver : Les scripts Shell sont assez bons pour exécuter des tests sur (un langage qui n'est pas Java). Comment utiliseriez-vous JUnit pour cela ?

1 votes

@BenVoigt J'avais initialement supposé que l'OP avait Java impliqué et cherchait à contourner JUnit comme harnais de test. Ce n'est probablement pas le cas après avoir examiné la question. Il semble que code.google.com/p/shell2junit peut être utile à l'OP après un second examen.

8voto

Nayana Adassuriya Points 2882

Structure de base Voici un exemple de fichier de sortie de JUnit, montrant un résultat "skip" et "failed", ainsi qu'un seul résultat "passed".

<?xml version="1.0" encoding="UTF-8"?>
<testsuites>
   <testsuite name="JUnitXmlReporter" errors="0" tests="0" failures="0" time="0" timestamp="2013-05-24T10:23:58" />
   <testsuite name="JUnitXmlReporter.constructor" errors="0" skipped="1" tests="3" failures="1" time="0.006" timestamp="2013-05-24T10:23:58">
      <properties>
         <property name="java.vendor" value="Sun Microsystems Inc." />
         <property name="compiler.debug" value="on" />
         <property name="project.jdk.classpath" value="jdk.classpath.1.6" />
      </properties>
      <testcase classname="JUnitXmlReporter.constructor" name="should default path to an empty string" time="0.006">
         <failure message="test failure">Assertion failed</failure>
      </testcase>
      <testcase classname="JUnitXmlReporter.constructor" name="should default consolidate to true" time="0">
         <skipped />
      </testcase>
      <testcase classname="JUnitXmlReporter.constructor" name="should default useDotNotation to true" time="0" />
   </testsuite>
</testsuites>

La structure documentée d'un rapport XML typique de JUnit est présentée ci-dessous. Notez qu'un rapport peut contenir une ou plusieurs suites de tests. Chaque suite de tests possède un ensemble de propriétés (enregistrement d'informations sur l'environnement). Chaque suite de tests contient également un ou plusieurs cas de test et chaque cas de test contiendra un nœud "skipped", "failure" ou "error" si le test n'a pas réussi. Si le cas de test a réussi, il ne contiendra aucun nœud. Pour plus de détails sur les attributs valables pour chaque nœud, veuillez consulter la section suivante "Schéma".

<testsuites>        => the aggregated result of all junit testfiles
  <testsuite>       => the output from a single TestSuite
    <properties>    => the defined properties at test execution
      <property>    => name/value pair for a single property
      ...
    </properties>
    <error></error> => optional information, in place of a test case - normally if the tests in the suite could not be found etc.
    <testcase>      => the results from executing a test method
      <system-out>  => data written to System.out during the test run
      <system-err>  => data written to System.err during the test run
      <skipped/>    => test was skipped
      <failure>     => test failed
      <error>       => test encountered an error
    </testcase>
    ...
  </testsuite>
  ...
</testsuites>

4voto

dnozay Points 3672

Il existe plusieurs schémas pour les résultats "JUnit" et "xUnit".

Veuillez noter qu'il existe plusieurs versions du schéma utilisé par le xunit-plugin de Jenkins (la dernière version actuelle est junit-10.xsd qui ajoute la prise en charge du format Erlang/OTP Junit).

Certains cadres de test ainsi que des plugins de rapports de type "xUnit" utilisent également leur propre sauce secrète pour générer des rapports de type "xUnit", qui peuvent ne pas utiliser un schéma particulier (veuillez lire : ils essaient de le faire mais les outils peuvent ne pas valider par rapport à un schéma particulier). Python unittests dans Jenkins ? donne une comparaison rapide de plusieurs de ces bibliothèques et des légères différences entre les rapports xml générés.

3voto

gaoithe Points 377

Bonnes réponses ici sur l'utilisation de python : (il y a de nombreuses façons de le faire) Python unittests dans Jenkins ?

Selon moi, la meilleure façon de procéder est la suivante écrire des tests python unittest y installer pytest (quelque chose comme 'yum install pytest') pour installer py.test. Ensuite, il faut exécuter des tests comme celui-ci : 'py.test --junitxml results.xml test.py' . Vous pouvez exécuter n'importe quel python script unittest et obtenir des résultats jUnit xml.

https://docs.python.org/2.7/library/unittest.html

Dans la configuration de construction de Jenkins Actions post-construction Ajouter une action "Publier le rapport des résultats des tests JUnit" avec result.xml et tout autre fichier de résultats de tests que vous produisez.

0voto

David I. Points 1762

En code.google.com/p/shell2junit Le lien mentionné par Aaron est intéressant. Il est facile à utiliser.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X