Junit Reports / Logs als XML ohne Maven/Ant

  • Themenstarter Themenstarter OSGI-Junit
  • Beginndatum Beginndatum
O

OSGI-Junit

Gast
Ich führe meine JUNIT Tests über ein innerhalb einer OSGI-Umgebung mit einem Bundle (junit4osgi Testrunner) aus. Nun habe ich bisher nur gesehen, dass man XML Reports von den Testergebnissen durch Ausführen von Ant Tasks oder durch Maven bekommt. Beides nutze ich wie bereits erwähnt nicht.

Also stellt sich mir nun die Frage, wie ich Junit eventuell vom Testcase aus dazu bringen kann mir so einen XML Report zu erstellen. Ich habe so das Gefühl, dass es darauf hinausläuft mir einen eigenen Testrunner zu schreiben, nur habe ich vom junit4osgi Testrunner keinen Sourcecode, um diesen entsprechend anzupassen.

Kann mir da jemand ein paar Tipps zur Lösung des Problems geben?
 
Beides nutze ich wie bereits erwähnt nicht.
Wie jetzt, kein autom. Build aber dennoch die Vorteile davon geniessen wollen? 😉

Ich habe so das Gefühl, dass es darauf hinausläuft mir einen eigenen Testrunner zu schreiben
Wird wohl so sein, sicher weiss ich das aber nicht, nutze Maven2.

nur habe ich vom junit4osgi Testrunner keinen Sourcecode, um diesen entsprechend anzupassen.
Sind die nicht hier zu finden?
Apache Felix - Download

Wie dem auch sei, denke dass du erstmal einen autom. Build erstellen solltest, dann brauchst du dir um solche & andere Probleme keine Gedanken mehr zu machen.
 
Ich habe mir selber schonmal ein XmlReport zusammengebaut mit den Klassen
aber ich weiß nur in welchem Jar, die Klasse steckt.
Und zwar im ant-junit*.jar

Die Klasse heißt XMLJUnitResultFormatter

Java:
..startTestSuite(..) ///am Anfang der Testsuite aufrufen
..startTest(...) // beim Start jedes Testes starten
..endTest(...) // in der tearDown() methode aufrufen 
..endTestsuite(..) // am ende der ganzen Testsuite aufrufen

Und schon hast du dein Xml Report
 
Zuletzt bearbeitet:
@maki
Stimmt den Sourcecode findet man dort tatsächlich im SVN. Hatte nicht drauf geachtet, da sich der Testrunner als Binary schonmal nicht auf der Seite hat finden lassen (musste ihn aus dem Beispiel zip nehmen...)

Also die Sache ist, das Ganze ist sogar für nen Hudson Build gedacht. Dort lasse ich momentan erst alles mit Ant builden und führe dann die Tests in der OSGI Umgebung aus. Das Problem ist nur, dass bei OSGI die Testklassen aus der OSGI Umgebung geladen werden müssen, die Junit Ant Tasks dagegen die Klassen selbst instanzieren (wenn ich das richtig gesehen habe). Zwar gibts auf der junit4osgi Seite auch ein Mavin Plugin, allerdings hab ich mich mit Maven noch nicht wirklich angefreundet, weshalb ich das erstmal vernachlässigt habe und nach einer Alternative suche.
Aber die scheint ja jetzt mit dem Source und diel2001 Tipp in greifbarer Nähe. Ansonsten muss ich mir doch mal mehr Zeit für Maven nehmen 😉

Jedenfalls schonmal danke euch beiden, hat mir sehr geholfen.
 
Entwickelst du mit Eclipse? Am einfachsten geht es dann IMO mit Eclipse Buckminster.
Du kannst in Hudson direkt eine Eclipse Launch Config für deine Unit Tests starten und bekommst den XML Report, wir machen das genauso. Ausserdem könntest du den Ant build dann beerdigen, für OSGi Bundles ist Ant einfach nicht zeitgemäß...
Ein Hudson Plugin für Buckminster gibt es übrigens auch.
Eclipse Buckminster Project
Buckminster PlugIn - hudson - Hudson Wiki
 
@Wildcard
Klingt erstmal gut, allerdings läuft bei mir Junit mit OSGI nicht aus Eclipse heraus, da ich eine eigene Targetplattform nutze und mir die Eclipse Junit Bundles erstmal zurecht frickeln müsste. Interessant finde ic haber schonmal, dass Hudson mit Eclipse Launch Configs zurecht kommt. Blöd nur, dass Eclipse bei mir dort absolute Pfade eingetragen hat o0
Jedenfalls werde ich mir das Buckminster alsbald mal genauer angucken.

@diel2001
Im Prinzip scheint dein Vorschlag zu funktionieren, ich weiß wo ich startTest und endTest platzieren muss, allerdings weiß ich nicht wo ich start und endTestsuite reinpacken muss. Denn diese beiden Methoden erwarten keine Junit Testsuite als Parameter, sondern die Klasse JunitTest aus dem ant-junit.jar und die benutze ich nirgendwo.
 
dann bau dir 2 Dummy Objekte
Java:
startTestsuite(new JUnitTest("Testname"))
....
JUnitTest junitTest = new JUnitTest();
junitTest.setCounts(run,fail,error); // Irgendsoeine Methode gibt es da um den Run, Fail und Error Count anzugeben
//den kann man aus deiner aktuellen Testsuite entnehmen
//am besten in der tearDown() methode aufrufen
endTestsuite(junitTest);
 
Klingt erstmal gut, allerdings läuft bei mir Junit mit OSGI nicht aus Eclipse heraus, da ich eine eigene Targetplattform nutze und mir die Eclipse Junit Bundles erstmal zurecht frickeln müsste
Ich verstehe nicht was dabei ein Problem sein soll? Eclipse unterstützt doch beliebige Target Platforms. Du kannst entweder deine TP als .target Datei definieren und die in Hudson verwenden, oder dir von Buckminster deine Target Platform on the fly zusammen bauen lassen.
 

Zurück
Oben