Andreas Bruns

Softwareentwicklung für Oldenburg und Bremen

Test-Driven-Development (TDD) mit den passenden Eclipse-Plugins

Die Entwicklungsumgebung Eclipse bietet für das Testen mit JUnit die JUnit-View. Um allerdings testgetrieben entwickeln zu können (Test-Driven-Development – TDD)  ist das etwas wenig. Jeder Entwickler, der es mit TDD ernst meint, sollte sich für effektives testgetriebenes Entwickeln (und mehr Spaß 😉 ) weitere Eclipse-Plugins installieren.

Während ich schon seit vielen Jahren die Plugins MoreUnit und EclEmma einsetze, habe ich erst vor kurzem bei der Java-User-Group Bremen (XING – JUG Bremen) das Plugin Infinitest kennengelernt. Was machen diese Plugins denn Schönes?

  • MoreUnit: Tests + Testmethoden anlegen und einfaches Wechseln zwischen Produktionscode und Testcode
  • Infinitest: kontinuierliches Ausführen der Tests im Hintergrund mit Testergebnis-Anzeige (rot / grün)
  • EclEmma: Überprüfung der Testabdeckung

Mit installierten Plugins können wir uns über viele zusätzliche nützliche UI-Elemente freuen und unser Eclipse sieht dann etwa folgendermaßen aus:

Editor mit einer "Klasse unter Test"

Editor mit einer „Klasse unter Test“

Das Installieren der Plugins erfolgt bei dem aktuellen Eclipse Juno (Version 4.2) auf die bekannten Wege per Update-Site oder indem man per Drag&Drop das Eclipse-Icon der Plugin-Seite in das Eclipse Fenster zieht. Jetzt schauen wir uns die jeweiligen Plugins mal etwas genauer an:

MoreUnit (Version 3.0)

Homepage: http://moreunit.sourceforge.net

Installation per Update-Site: http://moreunit.sourceforge.net/update-site/

MoreUnit erleichtert uns mit speziellen Tastaturkürzeln das Anlegen von Testklassen + Testmethoden und es ermöglicht uns ein einfaches Wechseln zwischen Testmethode und zu testender Methode. Zusätzlich werden die Methoden und Klassen im Editor und Package Explorer mit einem grünen Marker versehen.

MoreUnit - Neuen TestCase anlegen

MoreUnit – Neuen TestCase anlegen

Die Features von MoreUnit können sich sehen lassen:

  • Shotcuts: Strg-U (Generate Test), Strg-J (Jump to Test/Source), Strg-R (Run Tests)
  • Package-Explorer zeigt grünen Marker an Klasse, dass eine entsprechende Testklasse vorhanden ist
  • Editor zeigt grüne Marker an Methoden, die eine entsprechende Testmethode haben
  • Integration von Mocking-Frameworks: EasyMock, Mockito, JMock, JMockit

Damit das alles funktioniert, müssen wir MoreUnit unter Preferences noch konfigurieren. Bei meinen Maven-Projekten nutze ich folgende Einstellungen:

MoreUnit - Preferences anpassen

MoreUnit – Preferences anpassen

Infinitest (Version 5.1)

Homepage: http://infinitest.github.com

Installation per Drag&Drop oder per Update-Site: http://infinitest.github.com

Sobald sich eine Klasse ändert, führt Infinitest die Tests im Hintergrund automatisch aus, ohne dass man selber manuell eingreifen muss. Das funktioniert in kleinen Projekten sehr gut, ist für den Entwickler schön bequem und spart immer wieder einige Sekunden ein. In Eclipse werden fehlschlagende Tests an verschiedenen Stellen angezeigt:

  • die Statusleiste enthält einen rot/gelb/grünen Balken
  • die Problems-View enthält alle fehlschlagenden Tests mit den jeweiligen Ursachen
  • im Editor sind fehlschlagende Testmethoden rot markiert
  • im Package-Explorer sind fehlschlagende Testklassen rot markiert
Editor mit einem TestCase

Editor mit einem TestCase

EclEmma (Version 2.2)

Homepage: http://eclemma.org/

Installation per Drag&Drop oder per Update-Site: http://update.eclemma.org

Das Plugin EclEmma beruht auf dem Testabdeckungstool EMMA und offenbart dem Entwickler die  Testabdeckung auf sehr anschauliche Art. Nach der Ausführung von Tests wird der Produktionscode mit grün, gelb oder rot markiert und veranschaulicht damit, ob der Code durchlaufen worden ist oder nicht (oder mit gelb nur teilweise bei einer if-Anweisung). Außerdem ermöglicht die Coverage-View eine Auswertung der Testabdeckung auf Projekt-, Package-, Klassen- und sogar Methodenebene. Damit Testmethoden nicht auf Testabdeckung geprüft werden, sollte man die Testklassen herausnehmen: Run -> Coverage As -> JUnit-Test auswählen -> Coverage

Folgende EclEmma-Funktionalitäten nutze ich für meine tägliche Arbeit:

  • die Lauch-Konfiguration Coverage As (wird wie Run As und Debug As verwendet)
  • die farblichen (rot, gelb, grün) Testabdeckung-Markierungen im Editor-Fenster
  • die Coverage-View mit Statistiken bezuglich Testabdeckung

Zusammenfassung

Diese drei Eclipse-PlugIns machen Softwareentwicklung nach TDD effizienter und erhöhen den Spaß-Faktor beim Programmieren enorm. Geht es noch besser? Falls du noch ein gutes Test-Plugin kennst, dann teile mir das bitte mit. Testgetrieben entwickeln ist einfach toll. 😉

Kommentare sind geschlossen.