I\'ve read (and re-read) Martin Fowler\'s Mocks Aren\'t Stubs. In it, he defines two different approaches to TDD: \"Classical\" and \"Mockist\". He attempts to answer the
I am still relatively new at TDD - but the way I was taught/introduced to the differences was to think of it in terms of testing the integration between classes and so that you are not dependent on live data. For instance if I have a class that is pretty much stand-alone - not dependent on other classes I have built for a project and it doesn't go out to a live data/dev environment for input (like a DB or an API to a system) then I would only use classical unit tests in something like NUnit or JUnit - but when I start to test interaction between built classes - that's when it can get real handy to mock other custom classes and/or outside interaction - so that you can single out and test your current classes' code without trying to chase down a a potential bug in other classes you are calling.