# JUnit Plug'in Tests



## manuelle (26. Okt 2012)

Hallo zusammen,

ich muss einpaar Junit Tests führen, aber habe das noch nie gemacht. Jetzt kommt noch hinzu das es Plugin basiert sein muss! Wie macht man das den am besten, sollte man eher die Test in Fragment bundles, in bundles oder im selben package zu testenden codes ablegen? Und wo liegen die unterschiede, was für abhängigkeiten enstehen?

Gruß


----------



## Gonzo17 (6. Nov 2012)

So richtig zufriedenstellende Antworten habe ich darauf nicht bekommen, aber generell habe ich dazu ein paar Sachen gelesen. Ganz schlüssig fand ich das hier:

Testing Plug-ins with Fragments :: Modular Mind
java - Automating unit tests (junit) for Eclipse Plugin development - Stack Overflow


----------



## manuelle (6. Nov 2012)

ja danke dir, die habe ich auch gelesen hat mir aber nicht wirklich weitergeholfen. 

jetzt versuch ich es mit Maven, Maven trennt den Projektcode physisch vom Code der Unit-Tests. Die
liegen parallel in unterschiedlichen Quell-Verzeichnissen und die kompilierten Klassen werden in unterschiedlichen Verzeichnissen verwaltet. Genauso sind die Konfiguration der Unit-Tests und die dazugehörigen Ressourcen
vom restlichen Code getrennt. Eignet sich also ganz gut.


----------



## Gonzo17 (6. Nov 2012)

Maven ansich ist in der Hinsicht sicherlich praktisch. Ich mach es auch gerne mit Maven.

ABER nicht bei Eclipse-Plugins. Das Problem liegt gewissermaßen an zwei Stellen. Zuerst einmal sind Versionsnummern in OSGi und Maven unterschiedlich und auch nicht wirklich kompatibel. Und außerdem gibt es noch keine vernünftige Möglichkeit Eclipse Products mit Maven zu bauen. Da wird gerade an Tycho gearbeitet, aber mein letzter Stand war, dass es keine echte Alternative zu Buckminster ist (Buckminster überzeugt mich aber auch nicht wirklich).

Solltest du dein Plugin (oder gar Produkt?) automatisiert zur Verfügung stellen wollen, dann musst du es mit Buckminster oder Tycho bauen. Wie oben erwähnt wäre Tycho die (Noch-)Nicht-Reife Maven-Variante. Buckminster funktioniert mit Ant.


----------



## manuelle (6. Nov 2012)

danke dir für die Infos, ja genau ich muss es durch einsatz Tycho testen, also automatisiert. Wenn ich die Probleme mit dem Build Plan beseitigt habe "Could not calculate build plan:...." das immer wieder auftaucht wenn ich versuche ein Projekt zu erstellen, dann werde ich mir angucken wie es genau aussieht mit Tycho.

Ist das so eine Art automatischer runner wie pax runner bsw? Wäre dankbar für weitere Tipps 

Grüße


----------



## manuelle (6. Nov 2012)

Diese Fehlermeldung kriege ich immer :autsch:
vielleicht weisst du ja auf dem ersten Blick woran es liegen kann??

Could not calculate build plan: Plugin org.apache.maven.plugins:maven-resources-plugin:2.5 or one of its dependencies could not be resolved: Failed to read artifact descriptor for org.apache.maven.plugins:maven-resources-plugin:jar:2.5
Plugin org.apache.maven.plugins:maven-resources-plugin:2.5 or one of its dependencies could not be resolved: Failed to read artifact descriptor for org.apache.maven.plugins:maven-resources-plugin:jar:2.5


----------



## maki (6. Nov 2012)

Gonzo17 hat gesagt.:


> Maven ansich ist in der Hinsicht sicherlich praktisch. Ich mach es auch gerne mit Maven.
> 
> ABER nicht bei Eclipse-Plugins. Das Problem liegt gewissermaßen an zwei Stellen. Zuerst einmal sind Versionsnummern in OSGi und Maven unterschiedlich und auch nicht wirklich kompatibel. Und außerdem gibt es noch keine vernünftige Möglichkeit Eclipse Products mit Maven zu bauen. Da wird gerade an Tycho gearbeitet, aber mein letzter Stand war, dass es keine echte Alternative zu Buckminster ist (Buckminster überzeugt mich aber auch nicht wirklich).
> 
> Solltest du dein Plugin (oder gar Produkt?) automatisiert zur Verfügung stellen wollen, dann musst du es mit Buckminster oder Tycho bauen. Wie oben erwähnt wäre Tycho die (Noch-)Nicht-Reife Maven-Variante. Buckminster funktioniert mit Ant.


Das geht mittlerweile mit Tycho ganz gut, auch gibt es Plugins die nun die Versionsnummer in der POM an die im Manifest anpassen (anstatt umgelehrt wie bei Maven üblich).

Allerdings ist das nicht trivial und man soltle schon fundierte Maven und Eclipse RCP Kenntnisse haben.
Tycho ist so gar nciht maven-like, da werden die konventionen umgeworfen, der Lifecycle abgeändert etc. pp.
Wenn man weder versteht wie Eclipse RCP gebaut wird noch wie Maven arbietet tut man sich immer noch sehr schwer.

Ansonsten gitb es natürlich noch Probleme mit Maven/Tycho, ist aber besser als noch vor ein paar Jahren.

manuelle, wie gut kennst du dich denn mit Maven und Eclipse RCP aus?
Die Maven Fehlermeldung deutet darauf hin dass deine Repo konfig nicht stimmt.

Ach ja, ohne Repo Manager wie zB. Nexus braucht man Maven gar nicht  erst zu betreiben in einer Firma, und für Eclipse RCP/Tycho sollte man in der lage sein eigene P2 Repos zu bauen und zu deployen (zB. auf einem Apache), Target Konfigs sollte man auch ohne Wizard ändern können.

Alles in allem keine Aufgabe für Einsteiger.


----------



## manuelle (6. Nov 2012)

Ich bin Einsteiger, also null Erfahrung in dem Themengebiet. Trotzdem muss ich das machen. 

ja kann sein, ich weiss aber nicht wie man es macht. Ich die neuester MAven Version gespeichert und alles mögliche soweit in Eclipse integriert, die Settings.xml habe ich auch angepasst!

wenn ich Maven aus dem Terminal heraus starte steht da, dass keine Pom in diesem directory ist!

das repo wurde automatisch erstellt, soweit habe ich nichts daran geändert, oder muss ich da auch was ändern/setzten.??

Kannst du mir ein Link oder Literatur empfehlen?


----------



## Gonzo17 (6. Nov 2012)

maki hat gesagt.:


> Das geht mittlerweile mit Tycho ganz gut, auch gibt es Plugins die nun die Versionsnummer in der POM an die im Manifest anpassen (anstatt umgelehrt wie bei Maven üblich).



Ok, dann bin ich da möglicherweise nicht auf dem neusten Stand. Aber wie du sagst, es ist alles andere wie trivial. Es ist ja schon mit Buckminster unheimlich schwer (oder gar unmöglich) sein Produkt einfach, intuitiv, wartbar und problemlos automatisiert bauen zu lassen. Mich wundert es immer wieder, dass es jetzt nach Jahren nicht schon bessere Alternativen gibt, als ich vor über drei Jahren das erste Mal darauf gestoßen bin sah es kaum besser aus...


----------



## maki (6. Nov 2012)

> Ich bin Einsteiger, also null Erfahrung in dem Themengebiet. Trotzdem muss ich das machen.


Du meinst "soll", nicht "muss".

Maven:
Maven - External Resources on Maven
Tycho:
Tycho/Reference Card - Eclipsepedia

Ansonsten eben die Doku/Beispiele lesen/verstehen.

Artifactory Open Source Overview) oder eben Nexus (Sonatype.org: Nexus) als Repo manager.

P2 repo Mirroring: Equinox p2 Repository Mirroring - Eclipsepedia
P2 repo erstellen: Creating a p2 Repository from Features and Plugins  Developers, Developers, Developers!

Würde dir empfehlen, dich erstmal in OSGi/Eclipse RCP einzuarbeiten, dann in Maven/Tycho.


----------



## maki (6. Nov 2012)

Gonzo17 hat gesagt.:


> Ok, dann bin ich da möglicherweise nicht auf dem neusten Stand. Aber wie du sagst, es ist alles andere wie trivial. Es ist ja schon mit Buckminster unheimlich schwer (oder gar unmöglich) sein Produkt einfach, intuitiv, wartbar und problemlos automatisiert bauen zu lassen. Mich wundert es immer wieder, dass es jetzt nach Jahren nicht schon bessere Alternativen gibt, als ich vor über drei Jahren das erste Mal darauf gestoßen bin sah es kaum besser aus...


Im Vergleich zu dem was vor 3 Jahren in tycho los war sind das heute mit Version 0.16.0 "goldene Zeiten" *g*

Ich persönlich finde Buckminster viel komplizierter als Tycho/maven, liegt aber daran, dass ich vorwissen habe was Maven betrifft.

Das Tycho Team will Tycho als Standard Eclipse RCP Build Tool einführen, das Buckminsterteam sieht das nciht so optimistisch


----------



## manuelle (6. Nov 2012)

danke dir, ich schaue mir die Sachen mal an.

ja soll  ich sollte schauen wie man besten testen kann auf OSGi basis testen kann.
Mit Junit allein kommt man nicht weiter, ist also keine große Hilfe!


----------



## maki (6. Nov 2012)

JUnit ist nicht OSGi spezifisch, hat damit erstmal nix zu tun.

"Reines" OSGi ist wieder eine andere Baustelle, Eclipse RCP ist schon eien speziellere Geschichte.


----------



## manuelle (6. Nov 2012)

ja reines OSGi!


----------



## maki (6. Nov 2012)

manuelle hat gesagt.:


> ja reines OSGi!


Das macht nicht wirklich Sinn was du da sagst...

Was denn jetzt?
Eclipse RCP Plugins oder nur OSGi?


----------



## manuelle (6. Nov 2012)

ich hab doch garnichts von RCP gesagt! das warst du!


----------



## maki (6. Nov 2012)

Nur zur Klarstellung/Begriffsklärung (bevor es zu weiteren Verwirrungen kommt):


> ich muss einpaar Junit Tests führen, aber habe das noch nie gemacht. Jetzt kommt noch hinzu das es Plugin basiert sein muss!


Mit "Plugins" sind in diesem Kontext immer nur Eclipse RCP Plugins gemeint.
OSGi Bundles nennt man eben nur OSGi Bundles.

In diesem Falle brauchst du kein Tycho, kannst auch zB. SpringDM, Apache Felix Plugins etc. pp. für Maven nehmen.


----------



## Gonzo17 (6. Nov 2012)

Ich habe "Plugins" mit "Eclipse-Plugins" gleichgesetzt. Wenn du OSGi-Bundles meintest, dann ist das wieder was anderes. Und Eclipse RCP ist nochmal etwas anderes. Wenn du losgelöst von Eclipse bist, dann brauchst du weder Tycho noch Buckminster.


----------



## manuelle (6. Nov 2012)

jaaa genau so meine ich das, sorry für die Verwirrung!


----------

