Wherever there is code, there will be bugs. Catching these bugs before they reach production is key to creating happy users, building trust in your organization, and enhancing your own reputation as a skilled developer. Unit testing can be a powerful tool in an organization's arsenal when fighting for bug-free code. A good unit test is easy to write, and can catch a bug in an instant, without even running your application. But there is a catch: before you can write a powerful, bug-fighting unit test, your code must be testable. In this session, you will learn how to design and implement code that is unit test-ready. We will explain the Dependency Injection Principle and how to implement it, Inversion of Control Containers and when to use them, the power of Mock objects, and clean code practices as they apply to unit test readiness.