In this series of blog posts I will try to give the reader a good understanding of unit testing and the most important things that are associated with it. Nowadays unit testing is a very common practice that every software developer should know about. In this series of articles you will read about the purpose of unit testing, test-first (TDD), building testable software architectures and of course the unit testing itself. My samples are written in C# 4.0 using ASP.NET MVC3, Ninject, Moq and MSTest, but I will provide links and information about other frameworks as well. The principles of unit testing are pretty much all the same on other platforms, so even if you are a Java or PHP programmer you can follow this guide.