In diesem Blog möchte ich Hilfestellungen und Lösung zu kleinen Probleme meines Arbeitsalltags dokumentieren. Vielleicht ist ja für den einen oder anderen etwas dabei, was ihm weiterhilft.
Eclipse Plugins
In meiner täglichen Entwicklerarbeit habe ich es durch TDD vor allem mit zwei Plugins unter Eclipse zu tun, nämlich EclEmma (für die Code Coverage Analyse) und MoreUnit (für das leichtere Handling UnitTest zu Klasse).
Dabei sind mir folgende Verbesserungen aufgefallen, die ich euch gerne mitteilen möchte.
MoreUnit
MoreUnit verwende ich, weil es die Erstellung von Klasse auf Basis von Tests oder umgekehrt (Refactoring von Legacy Code) erleichtert.
Zudem lassen sich Tests sehr schnell mit Strg + R
ausführen, egal ob man sich im Test oder in der Klasse befindet.
Eines der Probleme, die bei der Arbeit mit MoreUnit im Umfeld von hybris nun entstanden ist, ist der Umstand, dass es unter hybris mehrere Source Ordner gibt und dazu mehrere assoziierte Testordner:
In obigem Fall ist
- web/testsrc Testordner zu web/src und
- testsrc Testordner für src.
In den allgemeinen Preferences zu MoreUnit läßt sich aber nur ein Standardordner für Tests eintragen, weshalb man in diesen Fällen eine projektspezifische Konfiguration benötigt.
In obigem Dialog werden also Testordner eingetragen und einer oder mehrere assoziierte Source Code Ordner.
Interessanterweise ist es auch möglich – zumindest im hybris Umfeld – in den allgemeinen, also projektunabhängigen Settings, unter Java als Test soruce folder einfach „test“ anzugeben. Warum und wie dieses Mapping funktioniert, ist mir aber unklar.
EclEmma
Die Performance der Anzeige der Code Coverage unter EclEmma läßt sicher sehr schnell erhöhen – insbesondere in Eclipse Workspaces mit zahlreichen Projekten wie ich sie unter hybris permanent habe – indem man direkt in den Coverage Configurations den Analysis Scope anpasst.
Man kann sehen (oder wie Obi Wan sagen würde fühlen), dass der Analysis Scope zu groß ist, wenn der Test (meist ja ein Unit Test) bereits durchgelaufen ist, aber die Coverage Analyse nun noch einige Sekunden braucht, sich aufzubauen.
In meinem Fall, wo es sich ausschließlich um UnitTests handelt, ist dies besonders performancelastig und der Scope ist letzten Endes meist nur eine Klasse.