[Grails eXchange] Session Test Driven Development with Groovy & Grails (Jeff Brown)
Jeff Brown, einer der sieben Groovy Grails Core Comitter, fängt an mit den Herausforderungen und den Benefits des Testens dynamischer Sprachen: Kein Compiler, wenig Tool-Support und unbekannte Dinge zur Compile-Zeit bzw. sehr testbare dynamische Sprachen, einfaches Testen dynamischer Sprachen und dem Zwang, dass man das macht, was man eh tun sollte. Starke Worte, dann mal los.
In Groovy soll man schnell reinkomen, wenn man Groovy testet. Groovy unterstützt Testen unter anderem dadurch, dass es einen GroovyTestCase anbietet und einige zusätzliche Assertions bereitstellt. Dieses Unit-Tests sind ähnlich wie Java-Unit-Tests vielfältig ausführbar.
Code Coverage Tools ist das nächste Thema: Cobertura, EMMA und Clover werden genannt, wobei Cobertura auch für Groovy funktioniert.
Expandos werden gezeigt als Alles-Testbar-Machen-Wunderwaffe in Zusammenspiel mit Duck-Typing. So wird isoliertes Testen möglich. Mocks und Stubs werden in Groovy bereitgestellt und vereinfachen ebenfalls das isolierte Testen (oder ermöglichen es in vielen Fällen sogar erst).
Enttäuschend: Es geht nur ums Testen, nicht ums Design oder gar ums Treiben des Designs.
Der Unterschied zwischen Unit- und Integrationstests wird diskutiert. Grails unterscheidet ebenfalls zwischen diesen beiden. Jeff zeigt, wie er eine Domain-Klasse in Grails integrativ tested. Endlich: Er erläutert den TDD-Zyklus und kommt auch auf Refactoring zu sprechen - für etwa 20 Sekunden :-(
Und wir sind bei den Functional Tests, also den Akzeptanztests. Hier bringt Jeff Selenium und Canoo WebTest ins Spiel. WebtTest rocks! Insbesondere mit der tollen DSL, die Grails da noch drüberstülpt.
Naja, nich' so pralle. Es ging um Tools und ums Testen - nicht so das, was ich hören wollte. Aber ich bin wahrscheinlich schon zu betriebsblind mit meinen TDD-Augen. Es kam aber ganz sicher nicht das Agile Feeling rüber, dass ich erwarten würde in einer TDD-Session.