Unit Testing and Agile Methodologies seem to be the latest buzz in the software industry these days, but many people who actually try to Unit Test their application (whether new code or 'legacy' code) find out quickly that doing a thorough job can be tough if some thought about the code's design for testability is not considered. In this talk we discuss various methods of designing your APIs so that they are easy to test: Breaking dependencies with Dependency Injection patterns, how design patterns help, interface-based programming and more. We also take a look at the future of testing tools and see what other options there are, or will be available as we architect our software with the next generation testing tools.