J'ai Hudson comme serveur d'intégration continue et je souhaite utiliser l'option «Publier le rapport de résultat du test JUnit». Mais je n'utilise pas les outils xUnit pour les tests, au lieu de cela, j'ai des scripts shell qui exécutent des tests et retournent les résultats dans un format simple. Je pense faire un script qui transforme ces résultats au format JUnit. Donc je suis intéressant à quoi le fichier JUnit doit ressembler?
183
Réponses:
J'ai fait une chose similaire il y a quelques mois, et il s'est avéré que ce format simple était suffisant pour que Hudson l'accepte comme protocole de test:
Cette question a des réponses avec plus de détails: Spec. pour la sortie XML JUnit
la source
class
a été rejeté et n'aclassname
fonctionné.<testsuite tests="(number of tests)">
ex.<testsuite tests="10">
.<testcase classname="foo.bar" name="ATest" />
Cela placera la classe bar dans un package foo sur Jenkins, ce qui rendra votre collection de tests plus organisée.Je viens de saisir le junit-4.xsd auquel d'autres ont lié et j'ai utilisé un outil nommé XMLSpear pour convertir le schéma en un fichier XML vierge avec les options ci-dessous. Voici le résultat (légèrement nettoyé):
Certains de ces éléments peuvent se produire plusieurs fois:
testsuites
élément, puisque c'est ainsi que fonctionne XML, mais il peut y avoir plusieurstestsuite
éléments dans l'testsuites
élément.properties
élément peut avoir plusieursproperty
enfants.testsuite
élément peut avoir plusieurstestcase
enfants.testcase
élément peut avoir plusieurserror
,failure
,system-out
ou lessystem-err
enfants.la source
Rootelement
:testsuites
,Max recursive de...
:2
,Max Repeat factor
:2
,include optional elements
: (oui = tic tac),include optional attributes
: (oui = tic tac)La réponse principale à la question Anders Lindahl fait référence à un fichier xsd .
Personnellement, j'ai trouvé ce fichier xsd également très utile (je ne me souviens pas comment j'ai trouvé celui-là). Cela semble un peu moins intimidant, et pour autant que je l'utilise, tous les éléments et attributs semblent être reconnus par Jenkins (v1.451)Une chose cependant: lors de l'ajout de plusieurs
<failure ...
éléments, un seul était conservé dans Jenkins. Lors de la création du fichier xml, je concatène maintenant tous les échecs en un seul.Mise à jour 2016-11 Le lien est maintenant rompu. Une meilleure alternative est cette page de cubic.org: format de fichier de rapport XML JUnit , où un bel effort a été fait pour fournir un exemple documenté judicieux . Exemple et xsd sont copiés ci-dessous, mais leur page est plus jolie.
exemple de fichier XML JUnit
Fichier JUnit XSD
la source
Je n'ai pas trouvé de bonnes informations à ce sujet, alors j'ai fait quelques essais et erreurs. Les attributs et champs suivants (et uniquement ceux-ci) sont reconnus par Jenkins (v1.585).
(J'ai commencé avec cet exemple de document XML et j'ai travaillé en arrière à partir de là.)
la source
Structure de base Voici un exemple de fichier de sortie JUnit, montrant un résultat ignoré et échoué, ainsi qu'un seul résultat passé.
Vous trouverez ci-dessous la structure documentée d'un rapport XML JUnit typique. 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 des informations sur l'environnement). Chaque suite de tests contient également un ou plusieurs cas de test et chaque cas de test contiendra soit un nœud ignoré, un échec ou une erreur si le test n'a pas réussi. Si le scénario de test a réussi, il ne contiendra aucun nœud. Pour plus de détails sur les attributs valides pour chaque nœud, veuillez consulter la section suivante "Schéma".
la source
Il existe plusieurs schémas pour les résultats "JUnit" et "xUnit".
model/xsd
)Veuillez noter qu'il existe plusieurs versions du schéma utilisées par le plugin xunit Jenkins (la dernière version actuelle
junit-10.xsd
ajoute la prise en charge du format Erlang / OTP Junit).Certains frameworks de test ainsi que les plugins de rapport de style "xUnit" utilisent également leur propre sauce secrète pour générer des rapports de style "xUnit", ceux-ci peuvent ne pas utiliser un schéma particulier (veuillez lire: ils essaient mais les outils peuvent ne pas valider contre aucun un schéma). Unittests Python dans Jenkins?donne une comparaison rapide de plusieurs de ces bibliothèques et de légères différences entre les rapports xml générés.
la source
Bonnes réponses ici sur l'utilisation de python: (il y a plusieurs façons de le faire) Python unittests dans Jenkins?
À mon humble avis, le meilleur moyen est d' écrire des tests python unittest et d' installer pytest (quelque chose comme «yum install pytest») pour installer py.test. Ensuite, exécutez des tests comme celui-ci: 'py.test --junitxml results.xml test.py' . Vous pouvez exécuter n'importe quel script python unittest et obtenir des résultats xml jUnit.
https://docs.python.org/2.7/library/unittest.html
Dans la configuration de build jenkins Actions post-build Ajoutez une action "Publier le rapport de résultat de test JUnit" avec result.xml et tout autre fichier de résultat de test que vous produisez.
la source
J'ai décidé de publier une nouvelle réponse, car certaines réponses existantes sont obsolètes ou incomplètes.
Tout d'abord: il n'y a rien de tel
JUnit XML Format Specification
, simplement parce que JUnit ne produit aucun type de rapport XML ou HTML.La génération de rapport XML elle-même provient de la tâche Ant JUnit / Maven Surefire Plugin / Gradle (selon ce que vous utilisez pour exécuter vos tests). Le format de rapport XML a été introduit pour la première fois par Ant puis adapté par Maven (et Gradle).
Si quelqu'un a juste besoin d'un format XML officiel, alors:
J'espère que cela aidera quelqu'un.
la source
**/build/test-results/**/TEST-*.xml
. Merci beaucoup!!!