In a previous article in this series of blog posts, I described the different Test Doubles that can be used when unit testing your application.
One of the tenets of Unit Testing is that in order to test a piece of code we often need to create some alternate implementation of one or more of the Interfaces involved in a test. This concept is generally called a Test Double. However there are many types of Test Double, and there is some degree of confusion about the types of doubles used.
One of the biggest challenges in writing Unit Tests - at least when you write them after you have created the actual code, rather than in a Test Driven Development style, is determining what should be tested.