2012-11-12 16 views
10

Ich versuche Jenkins xUnit Plug-in für mein Qt Unit-Test-Projekt zu verwenden, aber ich kann es nicht machen ...Zeigte das Ergebnis QTestlib mit Jenkins xUnit Plug-in

Hier ist, was ich bisher getan:

zunächst einmal baue ich mein Unit-Test-Projekt mit qmakebuilder Plug-in (den .pro zum qmakebuilder Plug-in bereitstellt), dann füge ich einen Execute Shell Build Abschnitt , wo ich zum ersten Mal rm -f des Testurteil XML-Datei, im Anschluss daran, führe ich die Test-Binärdatei mit -xunitxml Flag, damit es die XML-Datei für mich generiert Und ich benenne die XML-Datei testResult.xml, mit anderen Worten:

rm -f /home/guest/QT/unitTest/testResult.xml 
cd /home/guest/QT/unitTest 
./tst_unittesttest -xunitxml > testResult.xml 

schließlich in Post Build-Aktion, wähle ich Publish xUnit test result und das Muster als *.xml angeben.

den Job Gebäude wird jedoch fehlschlagen, Hier ist die Ausgabe, die ich erhalte, wenn die Arbeit mit Jenkins Aufbau:

[xUnit] [INFO] - Starting to record. 
[xUnit] [INFO] - Processing QTestlib-Version N/A 
[xUnit] [INFO] - [QTestlib-Version N/A] - 1 test report file(s) were found with 
the pattern '*.xml' relative to '/home/guest/QT/unitTest' for the testing framework 
'QTestlib-Version N/A'. 
[xUnit] [ERROR] - The converted file for the result file '/home/guest/QT/unitTest 
/testResult.xml' (during conversion process for the metric 'QTestlib') is not 
valid. 
The report file has been skipped. 
[xUnit] [ERROR] - The plugin hasn't been performed correctly: hudson.util.IOException2: 
Failed to read /home/guest/QT/unitTest/generatedJUnitFiles/QTestlib/TEST--735044756.xml 
Build step 'Publish xUnit test result report' changed build result to FAILURE 
Build step 'Publish xUnit test result report' marked build as failure 
Finished: FAILURE 

Wie kann man dort sehen, ist Problem mein Testergebnis XML-Datei zu dem, was xUnit Plug- Umwandlung in kann lesen. Meine testResult.xml Datei sieht wie folgt aus:

<?xml version="1.0" encoding="UTF-8" ?> 
<testsuite errors="2" failures="0" tests="4" name="UnitTestTest"> 
    <properties> 
    <property value="4.7.4" name="QTestVersion"/> 
    <property value="4.7.4" name="QtVersion"/> 
    </properties> 
    <testcase result="pass" name="initTestCase"> 
    <!-- message="called before everything else" type="qdebug" --> 
    </testcase> 
    <testcase result="pass" name="myFirstTest"/> 
    <testcase result="pass" name="mySecondTest"/> 
    <testcase result="pass" name="cleanupTestCase"> 
    <!-- message="called after myFirstTest and mySecondTest" type="qdebug" --> 
    </testcase> 
    <system-err> 
<![CDATA[called before everything else]]> 
<![CDATA[called after myFirstTest and mySecondTest]]> 
    </system-err> 
</testsuite> 

aber TEST--735044756.xml ist eine Zeile XML-Datei: <?xml version="1.0" encoding="UTF-8"?>

Wer hat eine Ahnung, wo bin ich, was falsch? Es sollte ein Problem beim Generieren der XML-Ausgabedatei geben.

Auf einer anderen Anmerkung, ich habe die Protokoll thingi in das System einloggen Jenkins-Menü hinzugefügt, es ist nicht der Grund für dieses Problem aber zu sein scheint ... zumindest IMO

Antwort

9

Durchführung des Tests binär mit -xml Flagge wird einfach gut funktionieren. Komischerweise mit -xunitxml erstellt eine beschädigte XML-Datei, die <testcase> nicht time Attribut hat. Das Ausführen der Testbinärdatei nur mit -xml führt zum erfolgreichen Erstellen des Jobs.

+0

Ich denke, es hängt von dem Format ab, das Sie in der Konfiguration des xUnit-Plugins auswählen. Das Format "QTestLib-Version N/A" (das in Version 1.50 des Plugins hinzugefügt wurde) erwartet das '-xml' Format von QTestLib. – Ignitor