Ich entwickle Eclipse-Plugins, und ich muss in der Lage sein, die Erstellung und Ausführung der Testsuite für jedes Plugin zu automatisieren. (Mit Junit)
Die Tests funktionieren in Eclipse, und ich kann die Plugins in das eigentliche Plugin und ein Fragment-Plugin für Unit-Tests aufteilen, wie beschrieben aquí , aquí und an einigen Stellen aquí .
Jeder der oben genannten Ansätze führt jedoch zu demselben Problem: Der Java-Ant-Task/Commandline-Befehl, der den Build auslöst oder den Test auslösen sollte, erzeugt keine beobachtbaren Nebeneffekte und gibt den Wert "13" zurück. Ich habe alles ausprobiert, was ich finden konnte, und ich habe einiges darüber gelernt, wie Eclipse startet (z.B.: seit v3.3 kann man startup.jar nicht mehr verwenden - es existiert nicht - aber man sollte org.eclipse.equinox.launcher ). Leider sind diese Informationen zwar offensichtlich notwendig, aber bei weitem nicht ausreichend.
Ich arbeite mit Eclipse 3.4, Junit 4.3.1 (das org.junit4-Bündel, aber ich würde viel lieber JUnit 4.4 verwenden. Siehe aquí .)
Meine Frage lautet also: Wie genau automatisieren Sie das Erstellen und Testen von Eclipse-Plugins?
Edita: Zur Klarstellung: Ich wollen so etwas wie Ant + Cruise Control zu verwenden, aber ich kann nicht einmal die Unit-Tests zum Laufen bringen überhaupt außerhalb von Eclipse. Ich sage "so etwas wie", weil es andere Technologien gibt, die das Gleiche erreichen, und ich bin nicht so wählerisch, eine funktionierende Lösung zu verwerfen, nur weil sie, sagen wir, Maven oder Buckminster verwendet, wenn diese Technologien die Sache wesentlich einfacher machen.
Bearbeiten2: Das oben erwähnte 'Java Result 13' scheint durch die Unfähigkeit, den Coretestrunner zu finden, verursacht zu werden. Aus dem Protokoll:
java.lang.RuntimeException: Application "org.eclipse.test.coretestapplication" could not be found in the registry. The applications available are: org.eclipse.equinox.app.error, com.rcpquickstart.helloworld.application.
at org.eclipse.equinox.internal.app.EclipseAppContainer.startDefaultApp(EclipseAppContainer.java:242)
at org.eclipse.equinox.internal.app.MainApplicationLauncher.run(MainApplicationLauncher.java:29)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:382)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:549)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504)
at org.eclipse.equinox.launcher.Main.run(Main.java:1236)
at org.eclipse.equinox.launcher.Main.main(Main.java:1212)
at org.eclipse.core.launcher.Main.main(Main.java:30)
!ENTRY org.eclipse.osgi 2 0 2008-11-04 21:02:10.514
!MESSAGE The following is a complete list of bundles which are not resolved, see the prior log entry for the root cause if it exists:
!SUBENTRY 1 org.eclipse.osgi 2 0 2008-11-04 21:02:10.515
!MESSAGE Bundle update@plugins/org.eclipse.test_3.2.0/ [34] was not resolved.
!SUBENTRY 2 org.eclipse.test 2 0 2008-11-04 21:02:10.516
!MESSAGE Missing required bundle org.apache.ant_0.0.0.
!SUBENTRY 2 org.eclipse.test 2 0 2008-11-04 21:02:10.516
!MESSAGE Missing required bundle org.eclipse.ui.ide.application_0.0.0.
!SUBENTRY 1 org.eclipse.osgi 2 0 2008-11-04 21:02:10.518
!MESSAGE Bundle update@plugins/org.eclipse.ant.optional.junit_3.2.100.jar [60] was not resolved.
!SUBENTRY 2 org.eclipse.ant.optional.junit 2 0 2008-11-04 21:02:10.519
!MESSAGE Missing host org.apache.ant_[1.6.5,2.0.0).
!SUBENTRY 2 org.eclipse.ant.optional.junit 2 0 2008-11-04 21:02:10.519
!MESSAGE Missing required bundle org.eclipse.core.runtime.compatibility_0.0.0.