From wikipedia "A template method defines the program skeleton of an algorithm. One or more of the algorithm steps can be overridden by subclasses to allow differing behaviors while ensuring that the overarching algorithm is still followed".
Typically this pattern is composed by two or more classes, one that is an abstractclass providing template methods (non-abstract) that have calls to abstract methods implemented by one or more concrete subclasses.
Often template abstract class and concrete implementations reside in the same project, but depending on the scope of the project, these concrete objects will be implemented into another project.
In this post we are going to see how to test template method pattern when concrete classes are implemented on external project, or more general how to test abstract classes.