Incapable d'obtenir de l'hudson pour analyser JUnit test de sortie XML
MODIFIER: Ce problème a été résolu par google dans gtest 1.4.0; voir l'original du rapport de bug pour plus d'informations.
J'ai récemment opté pour gtest pour mon C++ framework de test, et une grande fonctionnalité de ce qui, j'en suis actuellement pas en mesure de l'utiliser est la capacité à générer JUnit de style XML rapports de test, qui peut ensuite être lu par nos hudson serveur de build.
La sortie XML générée par le gtest suite de test semble tout à fait légitime:
<?xml version="1.0" encoding="UTF-8"?>
<testsuite tests="370" failures="0" disabled="0" errors="0" time="45.61" name="AllTests">
<testsuite name="application" tests="7" failures="0" disabled="0" errors="0" time="8.953">
<testcase name="zero_tasks_on_bootup" status="run" time="0" classname="application" />
...etc.
</testsuite>
</testsuite>
J'ai aussi essayé d'ajouter un JUnitReport tâche à mon script ant, qui fonctionne bien, et génère du XML comme suit:
<?xml version="1.0" encoding="UTF-8"?>
<testsuite tests="370" failures="0" disabled="0" errors="0" time="45.61" name="AllTests">
<testsuite name="application" tests="7" failures="0" disabled="0" errors="0" time="8.953">
<testcase name="zero_tasks_on_bootup" status="run" time="0" classname="application" />
...etc.
</testsuite>
</testsuite>
Le problème est, à chaque fois que je dis ant de publier le test JUnit résultats, et puis point à la brute résultat du test XML, ou la compilation des résultats générés dans la fourmi JUnitReport tâche, hudson se plaint toujours de trouver aucun résultats de test.
Je ne suis pas un java gars, donc je ne peux pas vous dire ce qui se passe ici, et je ne peux pas trouver un exemple de la façon dont les JUnit XML doivent ressembler. Quelqu'un peut-il aider à me diriger dans la bonne direction?
Si je "afficher la source" sur le vôtre, je vois que la magie personnages sont échappés. Ce que je fais mal? Je vais essayer à nouveau...
OriginalL'auteur Nik Reiman | 2009-01-09
Vous devez vous connecter pour publier un commentaire.
Voici comment je le fais:
OriginalL'auteur duffymo
Modifier: Google test a résolu ce problème, qui est inclus dans le gtest version 1.4.0. Voir l'original du rapport de bug pour plus d'info.
Bah! J'ai enfin trouvé la cause de ce problème, c'est parce que gtest produit un géant de fichier XML pour tous les résultats de test, et hudson attend un XML rapport de test par classe. J'ai écrit un script perl comme une solution de contournement pour ce problème. Pour l'utiliser, il vous ferait une cible dans votre ant script xml qui ressemble à quelque chose comme ceci:
Pour une raison quelconque, gtest aussi n'aime pas le mauvais style des barres obliques être transmis à partir d'ant, j'ai donc fait mon exec pour windows seulement, comme mon hudson est en cours d'exécution sur un serveur windows. Modifier '/' pour unix, évidemment.
J'ai aussi déposé une question pour cela sur la page gtest, et aussi l'une sur hudson issue tracker, donc j'espère que l'une des deux équipes va ramasser sur la question, comme je n'ai pas assez de temps pour sauter et faire un patch moi-même.... si ce n'est pas corrigé dans un futur proche, je pourrais juste avoir à le faire. 😉
OriginalL'auteur Nik Reiman
Je suis presque certain que ce n'est pas un problème de l'analyse du XML, mais plutôt un problème pour trouver les fichiers XML. Si vous utilisez un chemin relatif dans l'Hudson de config, assurez-vous que vous êtes clair dans quel répertoire il est par rapport à (je crois me souvenir qu'il soit non-évidente dans certaines circonstances).
Comme pour les exemples de ce que l'JUnit fichiers XML sont censés ressembler, bonne chance avec ça. Ce n'est pas précisément spécifié nulle part. Différents outils sont différents dialectes. Cela dit, Hudson fait un bon travail de la reconnaissance de tous. Je crois que c'était les développeurs de JUnitReport qui, le premier, a introduit le format XML, donc si vous l'utilisez, c'est aussi canonique que vous allez obtenir.
OriginalL'auteur Dan Dyer