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