Ich habe Hudson als Server für die kontinuierliche Integration und möchte die Option "JUnit-Testergebnisbericht veröffentlichen" verwenden. Aber ich benutze keine xUnit-Tools zum Testen, stattdessen habe ich Shell-Skripte, die Tests ausführen und Ergebnisse in einfachem Format zurückgeben. Ich denke daran, ein Skript zu erstellen, das diese Ergebnisse in das JUnit-Format umwandelt. Ich bin also interessant, wie die JUnit-Datei aussehen muss.
182
Antworten:
Ich habe vor ein paar Monaten etwas Ähnliches gemacht, und es stellte sich heraus, dass dieses einfache Format für Hudson ausreichte, um es als Testprotokoll zu akzeptieren:
Diese Frage hat Antworten mit mehr Details: Spec. für JUnit XML-Ausgabe
quelle
class
wurde abgelehnt und nurclassname
funktioniert.<testsuite tests="(number of tests)">
Ex hinzufügen musste .<testsuite tests="10">
.<testcase classname="foo.bar" name="ATest" />
Dadurch wird die Bar-Klasse in ein Foo-Paket für Jenkins aufgenommen, wodurch Ihre Testsammlung besser organisiert wird.Ich habe gerade die junit-4.xsd abgerufen , mit der andere verknüpft sind, und ein Tool namens XMLSpear verwendet , um das Schema mit den unten gezeigten Optionen in eine leere XML-Datei zu konvertieren. Dies ist das (leicht aufgeräumte) Ergebnis:
Einige dieser Elemente können mehrfach vorkommen:
testsuites
Element geben, da XML so funktioniert, aber es kann mehreretestsuite
Elemente innerhalb des XML gebentestsuites
Elements vorhanden sein.properties
Element kann mehrere untergeordnete Elemente habenproperty
.testsuite
Element kann mehrere untergeordnete Elemente habentestcase
.testcase
Element kann mehrere habenerror
,failure
,system-out
, odersystem-err
Kinder.quelle
Rootelement
:testsuites
,Max recursive de...
:2
,Max Repeat factor
:2
,include optional elements
: (ja = tickte)include optional attributes
: (ja = tickte)Die Top-Antwort auf die Frage Anders Lindahl bezieht sich auf eine xsd-Datei .
Persönlich fand ich diese xsd-Datei auch sehr nützlich (ich erinnere mich nicht, wie ich diese gefunden habe). Es sieht ein bisschen weniger einschüchternd aus, und soweit ich es benutzt habe, scheinen alle Elemente und Attribute von Jenkins (v1.451) erkannt zu werden.Eines jedoch: Beim Hinzufügen mehrerer
<failure ...
Elemente wurde nur eines in Jenkins beibehalten. Beim Erstellen der XML-Datei verkette ich jetzt alle Fehler in einem.Update 2016-11 Der Link ist jetzt defekt. Eine bessere Alternative ist diese Seite von cubic.org: JUnit XML-Berichtsdateiformat , auf der große Anstrengungen unternommen wurden, um ein vernünftiges dokumentiertes Beispiel bereitzustellen . Beispiel und xsd werden unten kopiert, aber ihre Seite sieht viel besser aus.
Beispiel-JUnit-XML-Datei
JUnit XSD-Datei
quelle
Ich konnte keine guten Informationen dazu finden, also habe ich ein paar Versuche gemacht. Die folgenden Attribute und Felder (und nur diese) werden von Jenkins (v1.585) erkannt.
(Ich habe mit diesem XML-Beispieldokument begonnen und von dort aus rückwärts gearbeitet.)
quelle
Grundstruktur Hier ist ein Beispiel für eine JUnit-Ausgabedatei, die ein übersprungenes und fehlgeschlagenes Ergebnis sowie ein einzelnes übergebenes Ergebnis zeigt.
Unten finden Sie die dokumentierte Struktur eines typischen JUnit-XML-Berichts. Beachten Sie, dass ein Bericht eine oder mehrere Testsuiten enthalten kann. Jede Testsuite verfügt über eine Reihe von Eigenschaften (Informationen zur Aufzeichnungsumgebung). Jede Testsuite enthält außerdem einen oder mehrere Testfälle, und jeder Testfall enthält entweder einen übersprungenen Fehler- oder Fehlerknoten, wenn der Test nicht bestanden wurde. Wenn der Testfall bestanden wurde, enthält er keine Knoten. Weitere Informationen darüber, welche Attribute für jeden Knoten gültig sind, finden Sie im folgenden Abschnitt "Schema".
quelle
Es gibt mehrere Schemas für die Ergebnisse "JUnit" und "xUnit".
model/xsd
)Bitte beachten Sie, dass das Jenkins xunit-Plugin mehrere Versionen des Schemas verwendet (die aktuellste Version bietet
junit-10.xsd
Unterstützung für das Erlang / OTP Junit-Format).Einige Test-Frameworks sowie Berichts-Plugins im "xUnit" -Stil verwenden auch ihre eigene geheime Sauce, um Berichte im "xUnit" -Stil zu generieren. Diese verwenden möglicherweise kein bestimmtes Schema (bitte lesen Sie: Sie versuchen es, aber die Tools validieren möglicherweise nicht gegen eines ein Schema). Python-Unittests in Jenkins? bietet einen schnellen Vergleich mehrerer dieser Bibliotheken und geringfügige Unterschiede zwischen den generierten XML-Berichten.
quelle
Gute Antworten zur Verwendung von Python: (Es gibt viele Möglichkeiten, dies zu tun) Python-Unittests in Jenkins?
IMHO ist der beste Weg , Python unittest Tests zu schreiben und pytest (so etwas wie 'yum install pytest') zu installieren, um py.test zu installieren. Dann Tests wie folgt ausführen: 'py.test --junitxml results.xml test.py' . Sie können jedes unittest Python-Skript ausführen und jUnit xml-Ergebnisse erhalten.
https://docs.python.org/2.7/library/unittest.html
In der Jenkins-Build-Konfiguration Aktionen nach dem Build Fügen Sie eine Aktion "JUnit-Testergebnisbericht veröffentlichen" mit result.xml und weiteren von Ihnen erstellten Testergebnisdateien hinzu.
quelle
Ich habe beschlossen, eine neue Antwort zu veröffentlichen, da einige vorhandene Antworten veraltet oder unvollständig sind.
Zuallererst: Es gibt nichts Vergleichbares
JUnit XML Format Specification
, einfach weil JUnit keinerlei XML- oder HTML-Bericht erstellt.Die XML-Berichtsgenerierung selbst stammt aus der Ant JUnit-Task / dem Maven Surefire Plugin / Gradle (je nachdem, was Sie zum Ausführen Ihrer Tests verwenden). Das XML-Berichtsformat wurde zuerst von Ant eingeführt und später von Maven (und Gradle) angepasst.
Wenn jemand nur ein offizielles XML-Format benötigt, dann:
Hoffe es wird jemandem helfen.
quelle
**/build/test-results/**/TEST-*.xml
. Vielen Dank!!!