TDD / BDD und das dynamic keyword in .NET 4.0

Written on March 10, 2010

Das Mantra von Test-Driven-Development (TDD) lautet: Red. Green. Refactor.

Das heutige Posting beschäftigt sich mit dem "Red" von TDD (und auch BDD) -- warum?

"Red" signalisiert, dass unser Test nach dem ersten Kompilieren bewußt fehlschlägt.

Das Problem: unser Code kompiliert zunächst überhaupt nicht, was ReSharper auch direkt signalisiert:

TDD klassisch

Das Problem liegt darin begründet, dass die Methode "AddItem" noch nicht existiert.

D.h. wir sind, bevor wir den Test überhaupt fehlschlagen / kompilieren lassen können, gewzungen, zumindest den Methodenrumpf zu deklarieren.

Mit dem dynamic keyword von .NET 4.0 können wir das Problem elegant umschiffen:

TDD mit dynamic keyword

Das Ganze funktioniert natürlich auch mit BDD, z.B. den den XUnit BDD Extensions -- zunächst wieder die Lösung, die nicht kompiliert, ohne den Methodenrumpf von AddItem zu definieren:

BDD klassisch

Ändert man nun den Typ des "System under Test" (SUT) auf dynamic, kann man auch hier ohne Deklaration des Methodenrumpfes von AddItem kompilieren:

BDD mit dynamic keyword

Der gezeigte Ansatz erspart somit die Definition der Methode in der "Red"-Phase von TDD und BDD.

Ich weiß allerdings nicht, ob ich das in der Praxis auch verwenden werde, denn mit Tools wie ReSharper oder einer modernen IDE wie Visual Studio 2010 ist der Rumpf ja auf Tastendruck generierbar.

Wie denkt Ihr darüber?