16 Stimmen

Automatisierung von Unit-Tests (Junit) für die Eclipse-Plugin-Entwicklung

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.

-1voto

Fred Punkte 4588

Hier ist ein Tool, das ich empfehlen kann, wenn jemand an TDD interessiert ist: Infinitest

Kurze Beschreibung von der Infinitest-Website entnommen:

Was ist Infinitest?

Infinitest ist ein fortlaufender Test-Runner der die testgetriebene Entwicklung Entwicklung. Infinitest hilft Ihnen TDD zu erlernen, indem es Ihnen während der Arbeit Feedback und hilft Ihnen TDD zu meistern, indem es durch die Reduzierung des Feedback-Zyklus von Minuten auf wenige Sekunden.

Wann immer Sie eine Klasse ändern, führt Infinitest Ihre Tests für Sie aus. Es ist schlau, welche Tests es ausführt, und führt nur die Tests aus, die Sie benötigen. Wenn Fehler auftreten, meldet es diese klar und prägnant. So erhalten Sie sofortiges Feedback über die semantische Korrektheit Ihres Codes, genau wie moderne IDEs Ihnen sofortiges Feedback geben über Syntaxfehler geben.

-1voto

silverbugg Punkte 214

Verwenden Sie Ameise y CruiseControl - rufen Sie die Einheitstests in der Ameise Skript sowie den Rest Ihrer Build-Logik und kann sie bei jeder Build-Iteration ausführen - dann CruiseControl können Sie Ihre Build-Aufrufe automatisieren und diese Tests jedes Mal ausführen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X