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:
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.
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:
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
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. 😉