

Studying about mock objects led me to jMock. Here’s a peek at my bookshelf, with the programming books that have influenced me the most. Once I learned how to add unit tests to legacy code, everything opened up. This book gave me techniques for making existing code testable.

This helped me with the greenfield project, but what could I do about legacy code? Along came another book: Working Effectively with Legacy Code by Michael Feathers.

Back then, there was no platform support for unit testing frameworks, so you just used whatever you could find or make.
