Sonntag, August 20, 2006

 

Tests mit Spring / EasyMock / JSF & Spring

Heute den Abschnitt über Tests im Spring-Buch von Eberhard Wolff gelesen, ist übrigens ein gutes Buch. Ich hab mit Eberhard mal bei PNP gearbeitet, er hat's drauf. Im Buch stand viel Wahres drin, ich musste erkennen, dass meine Tests durchaus noch Verbesserungspotential besitzen, hab dann heute auch prompt angefangen die Unit-Tests ohne Spring und wo nötig auf EasyMock umzustellen. EasyMock ist etwas gewöhnungsbedürftig, aber dann echt Klasse. Macht die Unit-Tests mal echt unabhängig.

Daraufhin weitergelesen und erkannt, dass ich die Verbindung von Spring und JSF schlecht umgesetzt habe. Dieser suboptimale Ansatz bestand in der Verwendung eines ServiceLocator-Patterns, wobei lediglich ein selbstkreierter ServiceLocator in die JSF-Beans gedrückt wurde. Den Ansatz hab ich aus einem Artikel auf JavaWorld.com. Keine Ahnung wann die JSF-Integration in Spring Einzug gehalten hat, aber ich nehme mal an dass die zur Zeit des Artikels noch nicht verfügbar war. Jetzt sollte man auch jeden Fall den den DelegatingVariableResolver verwenden um die Spring-Beans in der faces-config.xml in die JSF-Beans zu drücken. Damit erstreckt sich die Dependency Injection dann auch bis in die JSF-Beans und alles wird gut.

Resultat aus dem Umbau: Kein ServiceLocator mehr, das ist normalerweise noch eine zusätzliche Stelle gewesen in denen ich zumindest die Service-Beans registrieren musste (zusätzlich zur Spring-Konfiguration). Jetzt gibt's das Teil einfach nicht mehr. Mehr Übersichtlichkeit, es ist jetzt in der JSF-Konfig klar zu erkennen auf welche Services zugegriffen wird. Sehr praktisch wenn mal was ändern will um abzuschätzen wo der Spass sich auswirken könnte. Das gute Gefühl, dass alles seine Richtigkeit hat.

Und abschließend mal wieder die Erkenntnis, dass Unit-Tests die Qualität des Codes hinsichtlich der Struktur automatisch verbessern, weil einfach keinen Spass macht schlecht strukturierten Code zu testen.

Comments: Kommentar veröffentlichen



<< Home

This page is powered by Blogger. Isn't yours?