2012-11-19 5 views
9

Ich habe gerade einige Python Unit-Tests zu einem bestehenden Maven POM hinzugefügt, aber ich kann Jenkins nicht dazu bringen, die Ergebnisse der Tests zu melden, wenn er den Build ausführt.Anzeigen von benutzerdefinierten Testergebnissen in Jenkins Maven Job

Ich laufen nose Tests von Maven mit der exec-maven-plugin während der "Test" -Phase. Die Tests werden erfolgreich vom Jenkins-Job ausgeführt und generieren einen xUnit-kompatiblen Testbericht an target/surefire-reports/TEST-nosetests.xml, aber Jenkins greift die Ergebnisse nicht auf.

Interessanterweise Maven berichtet auch keine Tests durchgeführt, bevor die Testsuite ausführen:

------------------------------------------------------- 
T E S T S 
------------------------------------------------------- 
There are no tests to run. 

Results : 

Tests run: 0, Failures: 0, Errors: 0, Skipped: 0 

[INFO] 
[INFO] --- exec-maven-plugin:1.1.1:exec (nosetests) @ server --- 
[INFO] ................ 
[INFO] ---------------------------------------------------------------------- 
[INFO] Ran 16 tests in 194.799s 
[INFO] 
[INFO] OK 
[INFO] Registering compile source root /Volumes/Data/workspace/myProject/target 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESS 
[INFO] ------------------------------------------------------------------------ 

Das ist also ein Problem mit Jenkins nicht sehen, die Ergebnisse, oder mit Maven nicht meiner Testsuite als eigentliche Tests Behandlung?

Antwort

18

Ich habe dieses Problem gelöst, indem ich in Jenkins ein "Free-Style-Softwareprojekt" anstelle des "Maven2/3" -Projekts verwendet habe.

New Project

Unter Build-, wählen build In Schritt und konfigurieren das Projekt Invoke Maven Top-Level- zum Ziel hat. Ich verwende den Test Ziel.

Invoke top-level Maven targets

schließlich unter Aktionen-Post bautAktion Postbuild von JUnit Testergebnis Bericht veröffentlicht hinzufügen zu wählen und es an dem xUnit Ausgang Ihres Tests zeigen. Diese Option ist aus irgendeinem Grund nicht für Maven 2/3 Jobs verfügbar.

Publish JUnit test result report

+3

Ich denke, ist mit JENKINS-9980 Bug verbunden. https://issues.jenkins-ci.org/browse/JENKINS-9980 – Jmini

-1

Wie Sie in der Testausgabe sehen können, hat Maven die Tests nicht als Tests erkannt. Um die Ergebnisse in Jenkins zu sehen, müssen Sie überprüfen, ob Nope Junit-kompatible Ausgabe-Ergebnisdateien erstellen kann (was ich annehme), die von Jenkins gelesen und natürlich angezeigt werden können.

+1

Nose kompatibel Ausgang erzeugen kann, wie ich in der Frage angegeben. Das Problem ist, dass ich Maven nicht dazu bringen konnte, die Ausgabe zu sehen, um es Jenkins zu melden. Meine eigene Antwort zeigt, wie man Maven umgehen und Jenkins dazu bringen kann, den Bericht direkt zu sehen. – bpanulla

2

von bpanulla auf die Antwort erstellen, wenn Sie Tests in mehr als einem Unterverzeichnis des Projekts haben, können Sie einen Platzhalter in den „Prüfbericht XMLs“ Feld, wie verwenden: **/target/surefire-reports/*.xml

+0

das funktionierte für mich danke – Chandru

1

Wenn Sie ein modulares Jenkins-Setup mit einem freien Projekt haben, werden Submodule nicht richtig aufgebaut. Wenn das Maven-Plugin, das die Ausführungs-ID des Reports generiert, e2eTests ist, dann füge das folgende Snippet zu deiner pom.xml hinzu und das jenkins maven Plugin kümmert sich um den Rest!

<properties> 
    <jenkins.e2eTests.reportsDirectory>target/protractor-reports</jenkins.e2eTests.reportsDirectory> 
</properties> 

Siehe https://wiki.jenkins-ci.org/display/JENKINS/Building+a+maven2+project