Spring und TestenEs gibt zwar auch gerade (wie hier schon geschrieben) eine Diskussion zum Thema Testen und Dependency Injection, aber ich muss dennoch noch einmal etwas zu dem Thema sagen. Ich habe langsam den Eindruck, dass man das Thema Testen in seiner Wichtigkeit gar nicht überschätzen kann. Es ist eine triviale Weisheit: Ohne Testen kann man die Qualität einer Software nicht gewährleisten. Trotzdem gibt es in diesem Bereich immer noch deutliche Innovation. JUnit war die erste, die Testing plötzlich in den Vordergrund gerückt hat. Der nächste Schritt für mich war Easymock. Man hat sich dann gefragt, wie man vorher überhaupt Tests geschrieben hat. Die letzte größere Innovation scheint Fit zu sein, mit dem auch Akzeptanz-Tests mit einem einfachen, eleganten und effektiven Tool besetzt werden.
Das interessante ist nun, dass Dependency Injection (DI) sich tatsächlich in diese Reihe von Test-Tools in gewisser Weise einreiht. (Ja, ich bin voreingenommen und dies ist vereinfacht). Dennoch stellt sich bei der Auswahl von Möglichkeiten, die Spring bietet, die Frage, welcher Teil denn nun der wichtigste ist. Erstaunlich oft ist die Antwort DI. Es geht ja eigentlich "nur" darum, die Abhängigkeiten in einer Anwendung anders zu organisieren. Nachdem meistens sowieso eine oder mehrere Factories eingesetzt werden, ist die Einführung von DI in einem existieren Projekt eigentlich recht aufwändig. Und der nutzen ist recht gering: Man bekommt die Referenzen halt zugewiesen, statt sie selber zu suchen. Erst wenn man die isolierte Testbarkeit in die Gleichung einfügt, wird klar, dass der Aufwand gerechtfertigt ist. Auch die Abstraktion von der Ausführungsschicht (Java EE oder Java SE) bringt vor allem Vorteile beim Testen. Es ist also möglicherweise nicht die Vereinfachung von Java EE, die das entscheidende Argument darstellt, sondern die leichtere Testbarkeit. Insofern ist Spring vielleicht wirklich ein Testtool....
J for Java |
I for Internet, iMac, iPod and iPad |
Me for me