
provided very timely feedback on the sometimes very draft-like material I had 
posted there. These folks included Javid Jamae, Philip Nelson, Tomasz Gajewski, 
John Hurst, Sven Gorts, Bradley T. Landis, Cédric Beust, Joseph Pelrine, Sebas-
tian Bergmann, Kevin Rutherford, Scott W. Ambler, J. B. Rainsberger, Oli Bye, 
Dale Emery, David Nunn, Alex Chaffee, Burkhardt Hufnagel, Johannes Brod-
wall, Bret Pettichord, Clint Shank, Sunil Joglekar, Rachel Davies, Nat Pryce, 
Paul Hodgetts, Owen Rogers, Amir Kolsky, Kevin Lawrence, Alistair Cockburn, 
Michael Feathers, and Joe Schmetzer. Special thanks go to Neal Norwitz, Markus 
Gaelli, Stephane Ducasse, and Stefan Reichhart, who provided copious feedback 
as unoffi cial reviewers. 
Quite a few people sent me e-mails describing their favorite pattern or special 
feature from their member of the xUnit family. Most of these were variations on 
patterns I had already documented; I’ve included them in this book as aliases or 
implementation variations as appropriate. A few were more esoteric patterns 
that I had to leave out for space reasons—for that, I apologize. 
Many of the ideas described in this book came from projects I worked on 
with my colleagues from ClearStream Consulting. We all pushed one another 
to fi nd better ways of doing things back in the early days of eXtreme Program-
ming when few—if any—resources were available. It was this single-minded 
determination that led to many of the more useful techniques described here. 
Those colleagues are Jennitta Andrea, Ralph Bohnet, Dave Braat, Russel Bryant, 
Greg Cook, Geoff Hardy, Shaun Smith, and Thomas (T2) Tannahill. Many of 
them also provided early reviews of various chapters. Greg also provided many 
of the code samples in Chapter 25, Database Patterns, while Ralph set up my 
CVS repository and automated build process for the Web site. I would also like 
to thank my bosses at ClearStream, who let me take time off from consulting 
engagements to work on the book and for permission to use the code-based 
exercises from our two-day “Testing for Developers” course as the basis for 
many of the code samples. Thanks, Denis Clelland and Luke McFarlane! 
Several people encouraged me to keep working on the book when the going 
got tough. They were always willing to take a phone call to discuss some sticky 
issue I was grappling with. Foremost among these individuals were Joshua 
Kerievsky and Martin Fowler. 
I’d like to especially thank Shaun Smith for helping me get started on this 
book and for the technical support he provided throughout the early part of 
writing it. He hosted my Web site, created the fi rst CSS style sheets, taught 
me Ruby, set up a wiki for discussing the patterns, and even provided some of 
the early content before personal and work demands forced him to pull out of 
the writing side of the project. Whenever I say “we” when I talk about experi-
ences, I am probably referring to Shaun and myself, although other coworkers 
may also share the same opinion. 
Acknowledgments
xxviii