I recently worked on a Java project where we utilized the Fake Object pattern ad nauseum. We used this pattern to provide a test double layer of our data access objects, but in doing so, we tried to implement too much of a fake repository for our domain objects. The fake data access objects became a hindrance to writing unit tests and thus dissuaded people from writing unit tests. Well, a friend of mine still on the project told me today that they are ripping out all the fake object implementations and putting in mocks and stubs using the excellent mockito library. They hope to get back to easy test double usage and thus promote the use of unit testing and TDD. Moral of the story: Your tests can accumulate technical debt. Constantly ensure that test double usage is healthy in your unit tests.