Growing Object-Oriented Software Guided by Tests
Praise for the Book
The authors of this book have lead a revolution
    in the craft of programming by controlling the environment in which
    software grows. Their Petri dish is the mock object, and their microscope
    is the unit test. This book can show you how these tools introduce a
    repeatability to your work that would be the envy of any scientist.
    — Ward Cunningham
At last a book, suffused with code, that exposes
    the deep symbiosis between TDD and OOD. The authors, pioneers in
    test-driven development, have packed it with principles, practices,
    heuristics, and (best of all) anecdotes drawn from their decades of
    professional experience. Every software craftsman will want to pore over
    the chapters of worked examples and study the advanced testing and design
    principles. This one’s a keeper.
 — Robert C. Martin
Design is
    often discussed in depth, but without empiricism. Testing is often
    promoted, but within the narrow definition of quality that relates only to
    the presence or absence of defects. Both of these perspectives are
    valuable, but each on its own offers little more than the sound of one
    hand clapping. Steve and Nat bring the two hands together in what
    deserves—and can best be described as—applause. With clarity, reason, and
    humour, their tour de force reveals a view of design, testing, code,
    objects, practice, and process that is compelling, practical, and
    overflowing with insight.
 — Kevlin Henney, co-author of Pattern-Oriented
    Software Architecture and 97 Things Every Programmer Should
    Know
Steve and Nat have written a wonderful book that shares
    their software craftsmanship with the rest of the world. This is a book
    that should be studied rather than read and those who invest sufficient
    time and energy into this effort will be rewarded with superior
    development skills.
 — David Vydra, publisher,
    testdriven.com
This book presents a unique vision of test-driven
    development. It describes the mature form of an alternative strain of TDD
    that sprang up in London in the early 2000s, characterized by a totally
    end-to-end approach and a deep emphasis on the messaging aspect of
    objects. If you want to be an expert in the state of the art in TDD, you
    need to understand the ideas in this book.
 — Michael
    Feathers
With this book you’ll learn the rhythms, nuances in
    thinking, and effective programming practices for growing tested,
    well-designed object-oriented applications from the masters.
 — Rebecca
    Wirfs-Brock
