November 29, 2007
JP Solves My BDD Woes
by Brian Donahue
Mr. Boodhoo to the rescueBroken Link: http://www.jpboodhoo.com/blog/GettingStartedWithBDDStyleContextSpecificationBaseNa.aspx once again. I recently posted about how I really liked the Behavior Driven Development approach to building an application test-first, but I was struggling with the naming conventions I was coming up with when trying to organize and group my tests and fixtures using the same BDD contexts.
Apparently after a recent pairing session with Scott BellwareBroken Link: http://codebetter.com/blogs/scott.bellware, JP came up with a solution that is both elegant and ridiculously simple. It seems distilling challenges into elegant and simple solutions is something JP does 20-30 times a day, leaving observers with big red hand prints on their foreheads, mumbling "why couldn't I think of that?" That's what makes him the Michael JordanBroken Link: http://en.wikipedia.org/wiki/Michael_Jordan of .NET. The irony behind the "Nothin' But .NET" name for the training he offers is not lost on me! And let's not forget Scott, who I think JP has credited as inspiring the whole BDD approach and test naming style he has adopted. Maybe that makes Scott the Dennis RodmanBroken Link: http://www.drodman.com/ of .NET? I leave that to the fans to debate.
To summarize, he names his Classes (and corresponding files) as <SystemUnderTest>Specs, and then creates separate classes inside that specs class for each context. My stumbling point was that I was naming my classes by context, and couldn't think of a clean way to group by SystemUnderTest, and was ending up with horrible class names.
Read his full postBroken Link: http://www.jpboodhoo.com/blog/GettingStartedWithBDDStyleContextSpecificationBaseNa.aspx to see how this style breaks down into a very useful specification for your system, and helps you stay focused in and clear with TDD.