Junit-Programm von Kommandozeile über Ant starten

Byron

Mitglied
Guten Morgen zusammen!

Nachdem ich beim googlen und stöbern nicht weitergekommen bin, wende ich mich jetzt hier an die geballte Java-Kompetenz :)

Mein Problem ist Folgendes:

Ich habe eine Klasse, die per JUnit ausgeführt wird und mir XML-Dokumente in ein Verzeichnis extrahiert.
Nun sollte diese XML-Ausgabe per Ant anstoßbar gemacht werden.
Am Besten sollte in der Kommandozeile dann über ant ein Befehl eingegeben werden können, der die Ausgabe bzw die Erstellung der XML-Docs startet (also quasi die JUnit-Klasse).
Ausserdem sollten Parameter übergeben werden können wie "-d" für directory und "-l" für level (anderes XML-Dokument wird ausgegeben).
Wie kann ich das alles in einer weiteren Klasse verwirklichen?

Ich hoffe mir kann jemand helfen.

Grüße
 

Byron

Mitglied
Danke für die Antwort.

Ich weiß dass Ant ein JUnit Task hat, aber meine neue Klasse soll ja nicht nur die JUnit-Klasse ausführen, sondern auch Methoden enthalten, die quasi über Ant Parameter geliefert bekommen.
Meine Klasse führt die JUnit-Klasse momentan in der main-Methode aus.
Es bleibt die Frage wie ich Parameter aus Ant in der Klasse verarbeiten kann?
 

Byron

Mitglied
An eine Ant-Task hatte ich auch schon gedacht. Im Programmieren von Ant-Tasks hab ich noch keine Erfahrung, aber ich werd mich mal einlesen.
Mein Problem ist ja eigentlich, wie ich Parameter, die im build.xml als property stehen oder eben direkt eingegeben werden, in die Methoden aus meiner Klasse bekomme?!
Es soll nachher das Programm über die Kommandozeile ausgeführt werden können und das zu extrahierende File + das Verzeichniss in das extrahiert werden soll + Level (habe 2 verschiedene Extract-Methoden) als Parameter angegeben werden können ohne am Code etwas zu ändern.
Ich hoffe man versteht was ich meine und mir kann jemand helfen.

Grüße
 

Byron

Mitglied
So!
Hab mich jetzt mal an die Ant-Lektüren gesetzt. Ich bin sehr positiv gestimmt, dass ich bald meine Vorstellung umgesetzt hab.
Zu den Parametern: Wenn man eine Ant-Task programmiert, kann man über getProject().getProperty() ein Property aus dem xml-File auslesen. Ich hoffe ich krieg es damit umgesetzt.
Danke schonmal für die Hilfe. Ich melde mich wenn ich weitergekommen bin oder wieder Hilfe brauch ;-)
 

Wildcard

Top Contributor
Direkt auf Properties des scripts zuzugreifen ist sehr ungünstig, aber du kannst einem Ant Task direkt Parameter setzen. Der Ant Task muss dazu lediglich getter und setter mit dem Namen des Parameters bereitstellen.
 

Byron

Mitglied
Danke für die Antwort Wildcard.
Ich versteh nicht ganz wie du das meinst. Warum ist es ungünstig sich properties aus dem Script zu holen? Ich will die quasi in der Kommandozeile das Property (Bsp:dest.dir) vor jedem Extract setzen und mit der selbstprogrammierten Task dann quasi verwenden.
 
G

Gast2

Gast
Weil es undurchsichtig ist wenn der Task direkt auf eine Property zugreift.

Besser ist es:
[XML]
<mytask
parameter1 = "something"
parameter2 = "somethingother"
/>
[/XML]
Dann musst du in der Klasse halt nur einen Setter "setParameter1" und "setParameter2" haben.

Natürlich kannst du auch dann die Properties nutzen. Einfach im build.xml
[XML]
<mytask
parameter1 = "${dest.dir}"
parameter2 = "${build.dir}"
/>
[/XML]

Damit weiß jeder der das build file ließt das der Task die beiden Propertis benutzt und sie werden nicht "heimlich" aus dem Project gezogen.

Hier mal ein Beispiel was ich eben gemacht hatte:
http://www.java-forum.org/743215-post12.html
 

Byron

Mitglied
Danke fassy, das sieht echt top aus :toll:
Ich habs jetzt vorerst wie oben beschrieben mit den properties als parameter realisiert.
Läuft einwandfrei! Bin echt froh dass es funktioniert hat.
Ich werd mir aber deine Variante noch genau anschaun und versuchen evtl diese noch umzusetzen.

Vielen Dank nochmal an alle! :applaus:

Grüße Byron
 

Byron

Mitglied
Jetzt will ich mein extract möglichst ohne Abhängigkeit von Ant realisieren.
Das heisst, das meine Klassse nicht auf der Ant-Klasse aufbauen soll.
Hat jemand ne Idee wie ich das realisieren kann?

Grüße Byron
 

Wildcard

Top Contributor
Ich verstehe dein Problem nicht. Wenn du die Funktionalität Ant Unabhängig haben willst, dann darfst du einfach nicht von Task erben.
 

Byron

Mitglied
Danke für die Antwort.
Dass ich nichts von der Ant-Lib verwenden darf ist mir klar. Aber wie kann ich dann über die Kommandozeile Parameter übergeben und diese in meiner Klasse verarbeiten?

Grüße
 

Byron

Mitglied
Danke fassy, aber ich verstehs nicht so wirklich.
Was soll ich dann in der Kommandozeile eingeben, damit die Parameter der auszuführenden Klasse diese bekommen?
Und wie verarbeit ich sie in der Methode selbst?
Eine andere Lib einzubinden fällt raus, weil ich möglichst wenig Abhängigkeit haben möchte und deswegen ja auch die Ant-Lib weg haben will.
Wär sehr dankbar für ne ausführliche Erläuterung. Ich hoff ich nerve nicht langsam :oops:

Vielen Dank schonmal.

MfG Byron
 

Byron

Mitglied
...und täglich grüßt das Murmeltier (Byron) ;)

Hab jetzt das Problem, dass ich die Parameter nicht über Ant an mein Programm bekomm.

Hab es wie folgt versucht:
[XML]
<target name="extract" depends="compile">
<java classname="Pakete...AntExtract" classpath="./bin" classpathref="classpath.full"/>
<arg value="sourceFile" />
<arg value="destination" />
</target>
[/XML]

Hab es auch schon mit arg-list versucht, aber ohne Erfolg.
Folgendes Problem wird in der Kommandozeiel ausgegeben: "Problem: failed to create task or type arg."

Ich hoffe mir kann jemand von euch helfen!

Grüße vom Murmeltier ;-)
 

Byron

Mitglied
Entwickelt sich langsam zum Monolog :D

Ich hab den Fehler gefunden. Für die, die es interessiert:

Die Argumente müssen logischerweise innerhlab des Java-Tasks stehen. Richtig also:

[XML]
<target name="extract" depends="compile">
<java classname="Pakete...AntExtract" classpath="./bin" classpathref="classpath.full">
<arg value="sourceFile" />
<arg value="destination" />
</java>
</target>[/XML]
 

fastjack

Top Contributor
Das ist whl. so, weil hier keiner versteht, was Du eigentlich vorhast.

Wenn Du Klassen testen möchtest, die eine main-Methode haben, dann kannst Du die Logik in der main-Methode in eine andere Klasse verlegen und diese dann ganz normal mit JUnit testen. Die main()-Methode selbst kannst Du ebenfalls durch JUnit testen. Du brauchst dann keinen eigenen Task, sondern kannst ganz einfach den von JUnit nutzen.
 

Byron

Mitglied
Danke fastjack!

Genau das habe ich ja jetzt gemacht.
Die Klasse mit der Main-Methode diente nur zum Ausführen der eigentlichen Klasse, die ich eben schon mit Junit realisiert hattte.
Auf jeden Fall läufts jetzt wie ich das wollte.

Danke nochmals an alle für die Hilfe!

Gruß Byron
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Spring JUnit Test: Code / Strukturierung / Beratung Tools - Maven, Gradle, Ant & mehr 9
P Maven Test werden nicht ausgeführt . Junit . Maven . Surefire . Eclipse Tools - Maven, Gradle, Ant & mehr 12
H Eclipse JUnit erzeugt Fehler im Maven-Test Tools - Maven, Gradle, Ant & mehr 1
D JUnit Test in Maven fail und in Eclipse erolgreich Tools - Maven, Gradle, Ant & mehr 4
GianaSisters Ant jUnit und Ant Problem Tools - Maven, Gradle, Ant & mehr 2
G Ant Hudson/Jenkins, Ant und JUnit unter einen Hut bringen Tools - Maven, Gradle, Ant & mehr 12
Q Hudson JUnit Testcases durchführen Tools - Maven, Gradle, Ant & mehr 13
A Fehler bei Junit Tests über Ant Tools - Maven, Gradle, Ant & mehr 2
H ANT - Kompilieren von JUnit-Tests Tools - Maven, Gradle, Ant & mehr 7
N Problem mit Ant Classpath und Junit: Relative Pfade Tools - Maven, Gradle, Ant & mehr 2
S JUnit-Tests mit Ant und assert Tools - Maven, Gradle, Ant & mehr 3
M Programm mit Maven erstellen und starten samt Abhängigkeiten Tools - Maven, Gradle, Ant & mehr 27
M javafx wird in einem alten programm nicht bei maven gefunden Tools - Maven, Gradle, Ant & mehr 15
D Java Programm veröffentlichen am Besten modular Tools - Maven, Gradle, Ant & mehr 28
K Server-Programm auf Openshift-Server zum Laufen bringen Tools - Maven, Gradle, Ant & mehr 0
O Installer, generierbar aus Programm Tools - Maven, Gradle, Ant & mehr 3
D eigenständiges Programm Tools - Maven, Gradle, Ant & mehr 3
D maven webstart Programm - wie? Tools - Maven, Gradle, Ant & mehr 15
N Wie Java-Programm zu Applet machen?! Tools - Maven, Gradle, Ant & mehr 2
F Kleines Java-Programm geschrieben, 30 Dateien? Tools - Maven, Gradle, Ant & mehr 16
D Externes Programm mit Ant starten Tools - Maven, Gradle, Ant & mehr 3
T Applet soll Java Programm starten Tools - Maven, Gradle, Ant & mehr 2
G Java-Programm auf IIS Tools - Maven, Gradle, Ant & mehr 4
M Zusammenhängendes Programm Tools - Maven, Gradle, Ant & mehr 5

Ähnliche Java Themen

Neue Themen


Oben